Heaptrc Anzeige unterbinden wenn kein Speicherleck?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1214
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.11 FPC 3.2)
CPU-Target: 32/64Bit
Wohnort: Echzell

Heaptrc Anzeige unterbinden wenn kein Speicherleck?

Beitrag von fliegermichl »

Hallo zusammen,

ich compiliere gerade mit debug und heaptrc.
Ich hatte es schon mal gelesen, kann es aber gerade nicht finden.

Es gibt eine Möglichkeit die Anzeige des Heaptrc zu unterbinden wenn keine Speicherlecks gefunden wurden.
Weiß jemand gerade wie das nochmal ging?

wennerer
Beiträge: 411
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon, Lazarus Stable 2.2.0 (rev lazarus_2_2_0) FPC 3.2.2 x86_
CPU-Target: x86_64-linux-gtk2

Re: Heaptrc Anzeige unterbinden wenn kein Speicherleck?

Beitrag von wennerer »

Hi,
das könnte es sein.
viewtopic.php?p=130405#p130405

Viele Grüße
Bernd

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1214
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.11 FPC 3.2)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Heaptrc Anzeige unterbinden wenn kein Speicherleck?

Beitrag von fliegermichl »

Das war's!

Dankeschön

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1214
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.11 FPC 3.2)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Heaptrc Anzeige unterbinden wenn kein Speicherleck?

Beitrag von fliegermichl »

Und noch einer.

Wenn ich bei den Debuggereinstellungen die Erstellmodi Debug und Release erzeuge und dann Release auswähle, compiliere und dann das Programm starte, bekomme ich die Anzeige "Enable dwarf2 The Project does not write debug info in Dwarf format. The fpDebug internal Dwarf-debugger supports only Dwarf" und ich kann dann verschiedene Dwarf Formate oder Abbrechen wählen.

Das ist insofern korrekt, da ich ja ohne Debuginformationen compiliere.
Ich habe auch unter Werkzeuge -> Optionen -> Debugger -> Debugger Backend fpDebug eingestellt.
Das soll aber doch nur gelten wenn ich überhaupt debuggen will?
Zuletzt geändert von fliegermichl am Fr 28. Okt 2022, 10:50, insgesamt 1-mal geändert.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1214
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.11 FPC 3.2)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Heaptrc Anzeige unterbinden wenn kein Speicherleck?

Beitrag von fliegermichl »

So ganz klappt das nicht.
Ich habe in der .lpr Datei als erstes folgendes stehen

Code: Alles auswählen

  {$ifopt D+}
    {$if declared(UseHeapTrace)}
      GlobalSkipIfNoLeaks := true; // supported as of debugger version 3.1.1
     {$endif}
  {$endif}
{$endif}
Dann kommt das Tracefenster aber auch dann nicht, wenn Leaks vorhanden sind (Hab ich jetzt zum testen einfach mal provoziert)
Lazarus 2.2.0 (rev lazarus_2_2_0-80-g2187550) FPC 3.2.2 x86_64-win64-win32/win64

Ich934
Lazarusforum e. V.
Beiträge: 296
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: Heaptrc Anzeige unterbinden wenn kein Speicherleck?

Beitrag von Ich934 »

Das ifopt kannst du dir sparen. UseHeapTrace gibt es ja nur, wenn du im Debug-Modus bist. Das heißt, im Release-Modus wird das eh automatisch rausgenommen. Damit funktioniert das bei mir immer gut.
Tipp für PostgreSQL: www.pg-forum.de

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1214
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.11 FPC 3.2)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Heaptrc Anzeige unterbinden wenn kein Speicherleck?

Beitrag von fliegermichl »

Ich934 hat geschrieben:
Fr 28. Okt 2022, 10:39
Das ifopt kannst du dir sparen. UseHeapTrace gibt es ja nur, wenn du im Debug-Modus bist. Das heißt, im Release-Modus wird das eh automatisch rausgenommen. Damit funktioniert das bei mir immer gut.
Danke für den Hinweis. Das Tracefenster erscheint dann aber immer noch nicht auch wenn Leaks vorhanden sind.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5783
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Heaptrc Anzeige unterbinden wenn kein Speicherleck?

Beitrag von af0815 »

Hast du dir in dem verlinkten Thread mein Beispiel angesehen. Das steht im Code zwischen begin und end. Nicht sonst irgendwo.

Das ist einfach eine globale Variable.
Wenn ich bei den Debuggereinstellungen die Erstellmodi Debug und Release erzeuge und dann Release auswähle, compiliere und dann das Programm starte, bekomme ich die Anzeige "Enable dwarf2 The Project does not write debug info in Dwarf format. The fpDebug internal Dwarf-debugger supports only Dwarf" und ich kann dann verschiedene Dwarf Formate oder Abbrechen wählen.

Das ist insofern korrekt, da ich ja ohne Debuginformationen compiliere.
Ich habe auch unter Werkzeuge -> Optionen -> Debugger -> Debugger Backend fpDebug eingestellt.
Das soll aber doch nur gelten wenn ich überhaupt debuggen will?
Das kommt mir irgendwie komisch vor. Wenn ich im Release bin, dann habe ich keine Debuginfos - wozu auch.

Ist das ganze mit einem frischen Projekt getestet oder mit einem 'alten' ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4501
Registriert: Fr 8. Apr 2011, 09:01

Re: Heaptrc Anzeige unterbinden wenn kein Speicherleck?

Beitrag von wp_xyz »

Ich habe Martin über die Mailing-Liste angeschrieben, ob die Abfrage der Debug-Information nicht herausgenommen werden kann, wenn keine Debug-Informationen erzeugt werden.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1214
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.11 FPC 3.2)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Heaptrc Anzeige unterbinden wenn kein Speicherleck?

Beitrag von fliegermichl »

Ich habe das mit dem GlobalSkipIfNoLeaks eben nochmal ausprobiert und plötzlich funktioniert es?!?

Antworten