Free Pascal hat eine ähnliche Funktion. Rufen Sie am Ende des Programms DumpHeap
auf oder aktivieren Sie die Option haptrc in den Lazarus-Projekteinstellungen. Die Ausgabedatei kann mit der Methode SetHeapTraceOutput
festgelegt werden. Beide Methoden befinden sich in der Einheit heaptrc
, die die erste im Projekt sein muss (um Zuordnungen vom Start zu erfassen).
Weitere Informationen:
Leak Visualisierung: das Lazarus-Paket "LeakView" stellt den Inhalt einer Heap-Trace-Ausgabedatei in einer Baumansicht . Es ist in der Standardinstallation enthalten und nach einer Neuerstellung der IDE verfügbar. (Noch nicht von mir getestet)
// By default information is written to standard output,
// this function allows you to redirect the information to a file
SetHeapTraceOutput('heaptrace.log');
// normally the heap dump will be written automatically at the end,
// but can also be written on demand any time
DumpHeap;
Die Ausgabe sieht so aus:
C:\path\to\Demo.exe
Heap dump by heaptrc unit
244 memory blocks allocated : 8305/9080
241 memory blocks freed : 8237/9000
3 unfreed memory blocks : 68
True heap size : 458752
True free heap : 458288
Should be : 458480
Call trace for block $0010CE58 size 28
$0044ACCB TIDTHREADSAFE__CREATE, line 226 of C:/path/to/indy-10.5.8.tiburon/Lib/Core/IdThreadSafe.pas
$00444245 IDTHREAD_init, line 641 of C:/path/to/indy-10.5.8.tiburon/Lib/Core/IdThread.pas
$00409D74
$0040E1A1
...
(getestet mit Free Pascal 2.6.0)
Es gibt laufende Bemühungen, FastMM4 in FPC zu portieren. Vielleicht könntest du ein Teil sein. Dann könnten Sie Ihren Code unverändert ausführen, wenn FastMM4/FPC stabil wäre. http://lists.freepascal.org/lists/fpc-pascal/2005-December/009721.html http://lists.freepascal.org/lists/fpc-pascal/2009-June/021448.html –