Hast du eigentlich mal versucht, statt heaptrc die ganzen Überprüfungen (Projekt->Projekteinstellungen->Debuggen->Überprüfungen) einzuschalten?
Kracht's damit vielleicht auch schon (neu bauen)?
Problem mit Heap-Trace
- photor
- Beiträge: 512
- Registriert: Mo 24. Jan 2011, 21:38
- OS, Lazarus, FPC: Arch Linux: L 3.2 (Gtk2) FPC 3.2.2
- CPU-Target: 64Bit
Re: Problem mit Heap-Trace
Jup. Alles drin - Haken bei:
Erst wenn "Andere Debugger-Optionen" -> "Heaptrc-Unit verwenden" anhake, tut's nicht mehr.
Mein Verdacht: da ist irgendwo noch ein Speicherüberlauf - den dachte ich ja gerade so zu finden.
Ciao,
Photor
- I/O (-Ci)
- Bereich (-Cr)
- Überlauf (-Co)
- Stack (-Ct)
- Methodenaufrufe überprüfen (-CR)
- Code für Assertation einfügen (-Sa)
- Generate infor for Debugger
- debugging-Info-Typ Automatisch (-g)
- Zeilennummern in Laufzeitfehler-Backtraces anzeigen (-gl)
Erst wenn "Andere Debugger-Optionen" -> "Heaptrc-Unit verwenden" anhake, tut's nicht mehr.
Mein Verdacht: da ist irgendwo noch ein Speicherüberlauf - den dachte ich ja gerade so zu finden.
Ciao,
Photor
Re: Problem mit Heap-Trace
Seltsam: Wieso überschreibst du die Variable mit der Instanz von TFAtEntry, die du in der ersten Zeile erzeugt hast, in der nächsten Zeile gleich wieder?photor hat geschrieben: So 20. Feb 2022, 11:40Code: Alles auswählen
begin FATEntry := TFAtEntry.Create; FATEntry := FatigueList[IDLC]; .......
Re: Problem mit Heap-Trace
Guter Einwand, aber da müsste heaptrc doch ein Speicherleck anzeigen und keine Exception bei "Append" auslösen?wp_xyz hat geschrieben: Di 22. Feb 2022, 16:44Seltsam: Wieso überschreibst du die Variable mit der Instanz von TFAtEntry, die du in der ersten Zeile erzeugt hast, in der nächsten Zeile gleich wieder?photor hat geschrieben: So 20. Feb 2022, 11:40Code: Alles auswählen
begin FATEntry := TFAtEntry.Create; FATEntry := FatigueList[IDLC]; .......
Das ist halt immer das Problem, wenn man nur ein kurzes Code-Snippet vorgesetzt bekommt. Ich schaue mir das meistens gar nicht richtig an.
Was ist "TFAtEntry" and why should I care?
Re: Problem mit Heap-Trace
Normalerweise ja. Aber ich bin denke, dass die heaptrc-Speicherverwaltung schon vorher durcheinandergebracht wurde. Und ich behaupte auch nicht, dass diese Stelle das Problem verursacht. Aber dieser "Flüchtigkeitsfehler" in diesem winzigen Code-Ausschnitt zeigt, dass noch mehr von dieser Sort vorhanden sind...theo hat geschrieben: Di 22. Feb 2022, 16:55 da müsste heaptrc doch ein Speicherleck anzeigen und keine Exception bei "Append" auslösen?
- photor
- Beiträge: 512
- Registriert: Mo 24. Jan 2011, 21:38
- OS, Lazarus, FPC: Arch Linux: L 3.2 (Gtk2) FPC 3.2.2
- CPU-Target: 64Bit
Re: Problem mit Heap-Trace
OK. Das habe ich jetzt implementiert. An der Formatierung müsste ich noch arbeiten - das sollte aber kein Problem sein.theo hat geschrieben: Mo 21. Feb 2022, 21:58 Ja, das ist der Trick bei WriteAnsiString, aber du kannst auch nur Write nehmen wie im Bsp. unten, dann kommt keine Länge mit.
https://wiki.freepascal.org/TFileStream
Das spannendste ist aber: so läuft das Programm durch! Und der Heap-Trace zeigt aber noch:
- total memory allocated: -1
- leaking mem size: 0
- leaking block size: 0
PS: der "alte" Code ist noch Teil der Unit, wird nur nicht mehr angesprungen.
Ich werte das bis hierher mal als (Teil-)Erfolg.
Nachtrag: mittlerweile schreibt er auch was in das heap.trc-File, was sich mit "Leaks and Traces" auswerten lässt. Jetzt muss ich mich da durch graben (ist aber nicht so viel, wie ich befürchtet habe

Also: Danke für Eure Hilfe.
Ciao,
Photor