64 비트 (Win7, Delphi XE7) 용 이전 프로그램을 컴파일하려고합니다. 그러나 FastMM에 문제가 있습니다. 대신이 FastMM_FullDebugMode64.dll디버그 정보 (MAP 파일)가있을 때 FastMM이 64 비트에서 충돌합니다.
에 충돌 누출 보고서를 보여주는의오류 :
program TestCompile;
uses
fastmm4,
Vcl.Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
UNIT Unit1;
...
IMPLEMENTATION
VAR TSL: TStringList;
procedure TForm1.Button1Click(Sender: TObject);
begin
TSL:= TStringList.Create; // we generate a leak here. fastmm should report this
end;
end.
:
---------------------------
Debugger Exception Notification
---------------------------
Project TestCompile.exe raised exception class $C0000005 with message 'c0000005 ACCESS_VIOLATION'.
이 문제를 재현하는 데 필요한 코드
보시다시피 개인/제 3 자 코드는 없습니다. 모두 Delphi 코드로 완성됩니다.
DLL은 FastMM (4.992/2016) 패키지와 함께 제공되는 DLL입니다.
32 비트에서 작동합니다. 64 비트에서 IDe (디버거)를 실행하면 프로그램이 중단됩니다. 나는 단지 프로그램을 재설정 할 수있다 (Ctrl + F2). IDE 외부에서는 프로그램이 작동합니다 (FastMM은 IDE 외부에서 실행될 때 로그를 표시하지 않도록 구성됩니다).
업데이트 : 이것은 '델파이 컴파일러 -> 링크'아래의 디버그 정보 ('맵 파일')와 관련이 있습니다.
내가하지만, 최근이에 댓글을 알고 : http://stackoverflow.com/a/22685753/327083 –
우리는, 따라서 추정 할 수 로깅이 제대로 경우 작동하지 않습니다
또한이보고 이 디버거 예외를 통해 실행을 계속할 수 있습니까? –
예, 계속 진행할 수 있지만 문제는 다릅니다. @ IanGoldby의 질문에서 FastMM은 특정 경우에 작동하지 않습니다. 필자의 경우 FastMM은 기본/빈 프로젝트에서 모두 작동하지 않습니다. 그것은 FastMM이 64 비트에서 작동하도록 설계되지 않은 것과 같습니다. (그러나 이것은 말하지 않습니다! 분명히 64 비트에서 작동합니다 - 다른 사람들을 위해) – Ampere