Darmowy Pascal ma podobną funkcję. Na końcu programu zadzwoń pod numer DumpHeap
lub włącz opcję heaptrc w ustawieniach projektu Lazarus. Plik wyjściowy można ustawić za pomocą metody SetHeapTraceOutput
. Obie metody znajdują się w jednostce heaptrc
, która musi być pierwszą w projekcie (aby przechwytywać przydziały od początku).
Więcej informacji:
Leak wizualizacja: pakiet Lazarus "LeakView" przedstawia zawartość pliku wyjściowego śledzenia sterty w widoku drzewa . Jest on zawarty w domyślnej instalacji i dostępny po przebudowie IDE. (Jeszcze nie testowane przeze mnie)
// 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;
Wyjście wygląda następująco:
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
...
(testowane z Free Pascal 2.6.0)
Trwają starania, aby przenieść FastMM4 do FPC. Być może mógłbyś być częścią. Wtedy możesz uruchomić ten kod bez modyfikacji, jeśli FastMM4/FPC będzie stabilny. http://lists.freepascal.org/lists/fpc-pascal/2005-December/009721.html http://lists.freepascal.org/lists/fpc-pascal/2009-June/021448.html –