Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1766
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Beitrag von corpsman »

Hallo zusammen,
ich hab da mal ne eher Philosophische Frage bei der mich interessiert wie ihr das so löst..

Ich habe hin wieder die Situation, dass ich wissen will ob mein Code an einer bestimmten Stelle ausgeführt wird.

Code: Alles auswählen

Procedure Will_This_Code_Executed();
begin
  // Hier gibts irgendwie keinen Haltepunkt zum setzen.
end;
Im Fall wie oben habe ich irgendwie nichts wo ich den Breakpoint setzen kann. Meistens schreibe ich mir dann eine Projekt Globale Procedure wie:

Code: Alles auswählen

Procedure Nop();
begin
 // Leer nur zum Debuggen
end;
Damit kann ich dann an beliebigen Stellen im Code nen "Haltepunkt" auf Nop machen.

Code: Alles auswählen

Procedure Will_This_Code_Executed();
begin
  Nop(); // Nu kann ich hier den Haltepunkt setzen
end;
Vorteil, vergesse ich so ein Nop, dann richtet es nicht wirklich schaden an, Nachteil ich schreibe ständig die Nop definition in meinen Projekten.

Nun die Frage wie macht ihr das, oder bin ich der einzige der so komische Probleme hat ?
--
Just try it

Benutzeravatar
theo
Beiträge: 11253
Registriert: Mo 11. Sep 2006, 19:01

Re: Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Beitrag von theo »

Wie meinst du das genau?
Bei mir hält er an, einfach auf der nächsten Zeile. Ist das ein Problem? Wenn ja, warum?
Hat ggf. auch mit der Optimierungsstufe zu tun.

Lazarus 4.99 (rev main_4_99-3993-g3f73a8bc10) FPC 3.2.2 x86_64-linux-gtk3 mit fpDebug.
Dateianhänge
lazbp.png
lazbp.png (82.92 KiB) 667 mal betrachtet

Benutzeravatar
six1
Beiträge: 842
Registriert: Do 1. Jul 2010, 19:01

Re: Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Beitrag von six1 »

Genau... man kann den Haltepunkt auch auf das "end;" setzen.
Gruß, Michael

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1766
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Beitrag von corpsman »

*g*
ihr habt das richtig verstanden, bei meiner Frage gibts ja kein richtig oder falsch.
Zumindest mein innerer Monk findet das komisch nen Haltepunkt auf einen Kommentar zu setzen, deswegen mache ich da immer diese Nop funktion rein.

Ne Zeitlang hatte ich überlegt etwas der Art

Code: Alles auswählen

  Assert(true);
Rein zu schreiben, aber ich denke mein Nop Ansatz ist stabiler, weil ich nicht weiß was der Compiler macht, wenn man ohne Assertions compiliert ..
--
Just try it

Benutzeravatar
theo
Beiträge: 11253
Registriert: Mo 11. Sep 2006, 19:01

Re: Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Beitrag von theo »

Du hast vielleicht Probleme... :lol:

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 715
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.5 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Beitrag von Niesi »

corpsman hat geschrieben: Fr 3. Apr 2026, 11:58 *g*
ihr habt das richtig verstanden, bei meiner Frage gibts ja kein richtig oder falsch.
Zumindest mein innerer Monk findet das komisch nen Haltepunkt auf einen Kommentar zu setzen, deswegen mache ich da immer diese Nop funktion rein.

Ne Zeitlang hatte ich überlegt etwas der Art

Code: Alles auswählen

  Assert(true);
Rein zu schreiben, aber ich denke mein Nop Ansatz ist stabiler, weil ich nicht weiß was der Compiler macht, wenn man ohne Assertions compiliert ..


Ich mache das "ganz und gar falsch", sozusagen: Bei meinen Programmen habe ich fast immer einen "InfoForm", der einfach ein Form mit einem Memo drin ist. An kritischen Stellen schreibe ich mir dann zusätzlich Code, der die erforderlichen Ausgaben in das Memo macht. Dazu habe ich mir in letzter Zeit angewöhnt, eine globale Variable namens "ShowDebugInfo" zu deklarieren, so dass ich die Ausgaben ins Memo nur dann machen lasse, wenn es was zu untersuchen gibt. Die kann ich dann auf true oder false setzen und so die Berechnungen einfacher überprüfen.

Das mache ich, weil ich praktisch immer mehrere Variablen untersuchen muss. Wenn ein Ergebnis falsch ist, dann weiß ich fast nie, an welchem Wert das liegt, so dass es sinnvoll ist, gleich alle "beteiligten" Variablenwerte rauszuschreiben. Selbst für die Berechnung einer Kegelpressverbindung komme ich auf 56 Properties - davon dann 10 oder 20 per Debugger zu untersuchen finde ich zu umständlich ...
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

hum4n0id3
Beiträge: 369
Registriert: So 5. Mai 2019, 15:23

Re: Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Beitrag von hum4n0id3 »

Ich weiß jetzt nicht genau wie der Haltepunkt unter Lazarus funktioniert, gehe aber davon aus das es genauso wie unter C/Cpp, JS, Python, PHP, Java... wo ich sowas schon mal ausprobiert habe.

Man definiert einen Haltepunkt und der Debugger hält dort an. Über Navigation kann man dann schrittweise zB. Zeile um Zeile springen und zum Beispiel wenn eine Funktion steht, man in diese Funktion springen kann und diese Analysieren.

Du schreibst deine Funktion und wenn du diese mit dem Debugger schauen willst, setzt du den Haltepunkt an eine Stelle in der Funktion, oder du rufst die Funktion auf, setzt den Haltepunkt auf die Zeile wo die Funktion aufgerufen wird und springst während des Debuggens in die Funktion.

Zusätzlich haben Debugger watcher wo man die zu überwachende Variablen sehen kann.

Oder verstehe ich etwas falsch?

Benutzeravatar
theo
Beiträge: 11253
Registriert: Mo 11. Sep 2006, 19:01

Re: Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Beitrag von theo »

Niesi hat geschrieben: Fr 3. Apr 2026, 13:09 Ich mache das "ganz und gar falsch", sozusagen: Bei meinen Programmen habe ich fast immer einen "InfoForm", der einfach ein Form mit einem Memo drin ist. An kritischen Stellen schreibe ich mir dann zusätzlich Code, der die erforderlichen Ausgaben in das Memo macht.
Kann man etwas eleganter machen ohne separates Formular, indem man das Console In/Output Fenster anzeigt (In der gedockten IDE auch beim Nachrichtenfenster zu platzieren).
Dort kann man mit Writeln oder DebugLn reinschreiben.
Bei DebugLn kann man Gruppen machen etc.
https://wiki.freepascal.org/LazLogger
Es gibt viele Wege...

lazdgblog.png
lazdgblog.png (138.78 KiB) 591 mal betrachtet

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 715
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.5 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Beitrag von Niesi »

theo hat geschrieben: Fr 3. Apr 2026, 14:13
Es gibt viele Wege...
Das stimmt.

Und Danke, das schaue ich mir mal an ...
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1766
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Beitrag von corpsman »

Wenn ich was loggen will nutze ich meine https://github.com/PascalCorpsman/Examp ... logger.pas, die ist vergleichbar wie der lazlogger :lol:
--
Just try it

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

Re: Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Beitrag von af0815 »

Lazlogger, HeapTrace und extensiv Breakpoints. Natürlich immer Debug und Release vom Projekt. Bei Debug immer alle Checks eingeschaltet und Debugger freundlich linken.

Vom Start des Projektes an.

Ausgaben von HeapTrace in eine Datei umleiten, das spart Nerven und man kann es in Ruhe auswerten.

LazLogger kann man, wenn man RTFM macht sehr flexibel einsetzen und einfach zwischen Debug und Release umschalten.

Seit ewigen Zeiten (Auch schon bei Delphi) ist extensives Debuggen für mich normal. Auch einen Lazarus (oder FPC) mit Debugsymbolen bauen durchaus etwas was ich bei der Fehlersuche mache.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 11253
Registriert: Mo 11. Sep 2006, 19:01

Re: Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Beitrag von theo »

af0815 hat geschrieben: Fr 3. Apr 2026, 16:15 Seit ewigen Zeiten (Auch schon bei Delphi) ist extensives Debuggen für mich normal.
Debuggen muss man nur, wenn man beim Programmieren Fehler macht.
Ich kann darauf verzichten... :lol:

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

Re: Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Beitrag von af0815 »

theo hat geschrieben: Fr 3. Apr 2026, 16:23
af0815 hat geschrieben: Fr 3. Apr 2026, 16:15 Seit ewigen Zeiten (Auch schon bei Delphi) ist extensives Debuggen für mich normal.
Debuggen muss man nur, wenn man beim Programmieren Fehler macht.
Ich kann darauf verzichten... :lol:
Wer arbeitet macht Fehler, wer nicht arbeitet macht keine Fehler. :mrgreen: SCNR
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

pascoli
Beiträge: 17
Registriert: So 4. Mai 2025, 21:21

Re: Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Beitrag von pascoli »

Da fehlt doch noch das entscheidende "Und wer keine Fehler macht, wird befördert".

Mathias
Beiträge: 7251
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Wie macht ihr euch "spontane" Haltepunkte in euren Projekten ?

Beitrag von Mathias »

Ich suche Fehler vielmals mit einem Writeln und einer Konsole.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten