Servus,
ich möchte gern ein Package unter Linux debuggen. Unter Windows funktioniert das so:
- ich gehe in die Source-Stelle und setze einen Breakpoint
- ich drücke <Shift> + <F11> und füge das Package zum Projekt hinzu
- ich starte das Programm und warte bis der Breakpoint angesprungen wird
Leider funktioniert das unter Linux Mint nicht. Während Breakpoints in dem zum Projekt gehörenden Units angesprungen werden, werden es diese vom Package nicht (auch das hineinsteppen geht nicht).
Füge ich manuell den Pfad der zu debuggenden Package-Source hinzu, funktioniert das hineinsteppen in die Source bzw. ein Breakpoint wird angesprungen. Allerdings glaube (hoffe) ich nicht, dass dies der unter Linux zu gehende Weg ist. Weiß jemand, was ich machen muss, um ein Package, wie oben beschrieben, zu debuggen?
Linux Mint 17.3 KDE GTK2 32bit
Lazarus 1.6 FPC 3.0.0
GNU gdb 7.7.1
Packages: BGRABitmapPack / BGRAControls
[gelöst] Debugger unter Linux
[gelöst] Debugger unter Linux
Zuletzt geändert von Michl am Di 28. Jun 2016, 22:36, insgesamt 1-mal geändert.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Debugger unter Linux
Auf eine ähnliche Frage hat mir jemand, ich glaube es war martin_fr, geantwortet, dass man in solchen Fällen unter "Additions and Overrides" ("Hinzufügungen und Beeinflussungen") die Option -gw2 hinzufügen soll. Und damit hatte ich diese Probleme nie mehr. Nachteil ist, dass das erste Compilieren des Projekts (und auch des nächsten Projekts) etwas dauert, weil alle benötigten Packages mit der entsprechenden Debugger-Info neu gebaut werden.
Re: Debugger unter Linux
Hmm, ich hatte -gw -godwarfsets und -gs probiert, beides gleich. Die Debuginfo -gw2 hatte ich nicht probiert, da -gw und -gw2 gleich sein sollen (ruft man "fpc -h" auf, steht dass zumindest dort). Vielleicht ist war -godwarfsets der Schuldige?
Trotzdem, sehr merkwürdig, ich habe einmal den Pfad gesetzt gehabt und wieder entfernt. Jetzt wird, trotz Neuübersetzung der Packages, auch so immer in diese hineingesprungen. Ich kann den Fehler nicht mehr nachstellen.
Vielen Dank erstmal für die Info. Wenn mir dies das nächste mal passiert, werde ich mich an deine Empfehlung zurückerinnern.
Trotzdem, sehr merkwürdig, ich habe einmal den Pfad gesetzt gehabt und wieder entfernt. Jetzt wird, trotz Neuübersetzung der Packages, auch so immer in diese hineingesprungen. Ich kann den Fehler nicht mehr nachstellen.
Vielen Dank erstmal für die Info. Wenn mir dies das nächste mal passiert, werde ich mich an deine Empfehlung zurückerinnern.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Debugger unter Linux
-gw2, -gw etc. ist m.E. egal. Es ist wichtig, das die Option bei den "Additions..." gesetzt wird, damit alle Abhängigkeiten entsprechend neu kompiliert werden. Das Setzen unter den Debugger-Optionen hat m.E. nicht denselben Effekt.
Re: Debugger unter Linux
Ah, OK, wusste ich nicht. Muss mal schauen, ob ich die Ausgangssituation nochmal herstellen kann. Werde noch ein bisschen experimentieren.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Debugger unter Linux
@wp: Habe gerade Zeit und das gestrige Problem wieder in Augenschein genommen. Ein Clean up and build hat mir das Ausgangsproblem wieder hergestellt. Tatsächlich, wie du gesagt hattest -gw2 bei Additions and Overrides gesetzt und schon funktioniert das Debuggen. Danke nochmal für den Hinweis!
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;