Je suis en train de compiler un ancien programme pour 64 bits (Win7, Delphi XE7). Cependant, j'ai un problème avec FastMM. Au lieu de montrer le rapport de fuite, il se bloque dans FastMM_FullDebugMode64.dllFastMM se bloque sur 64 bits lorsque les informations de débogage (fichier MAP) sont présentes
L'erreur est:
---------------------------
Debugger Exception Notification
---------------------------
Project TestCompile.exe raised exception class $C0000005 with message 'c0000005 ACCESS_VIOLATION'.
C'est le code nécessaire pour reproduire le problème:
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.
Comme vous pouvez le voir il n'y a pas de code personnel/3ème partie. Tout est fait avec du code Delphi.
La DLL est celle fournie avec le package FastMM (4.992/2016).
Cela fonctionne sur 32 bits. Sur 64 bits, il bloque le programme si je cours sous IDe (débogueur). Je peux seulement réinitialiser le programme (ctrl + f2). En dehors de l'IDE, le programme fonctionne (FastMM est configuré pour ne pas afficher le journal lorsqu'il est exécuté en dehors de l'EDI).
Mise à jour: Cela a quelque chose à voir avec la présence d'informations de débogage ('Fichier de carte' sous 'Compilateur Delphi -> Liaison').
Je sais que vous avez parlé de cela récemment, mais: http://stackoverflow.com/a/22685753/327083 –
Peut-on présumer, par conséquent, que l'enregistrement ne fonctionne pas correctement si vous continuez simplement l'exécution à travers cette exception de débogueur? –
Oui, je peux continuer l'exécution MAIS mon problème est différent. Dans la question de @ IanGoldby, FastMM ne fonctionne pas dans un cas spécifique. Dans mon cas FastMM ne fonctionne pas du tout sur un projet par défaut/vide. C'est comme si FastMM n'avait pas été conçu pour fonctionner sur 64 bits (MAIS je ne dis pas ça !! Bien évidemment cela fonctionne sur 64 bits - pour d'autres) – Ampere