Können Sie Ihre kniffligsten und nützlichsten Befehle posten, während Sie einen Debugger wie gdb oder dbx ausführen.
Die kniffligsten/nützlichsten Befehle für den gdb-Debugger [closed]
- Rücklauf voll: Vollständiger Backtrace mit lokalen Variablen
- hoch, Nieder, rahmen: Bewegen Sie sich durch Frames
- Uhr: Prozess unterbrechen, wenn eine bestimmte Bedingung erfüllt ist
- Druck hübsch einstellen: Druckt hübsch formatierten C-Quellcode aus
- Anmeldung einstellen: Debugging-Sitzung protokollieren, um sie anderen zur Unterstützung anzuzeigen
- Druckarray einschalten: Hübscher Array-Druck
- Fertig: Weiter bis zum Ende der Funktion
- ermöglichen und deaktivieren: Haltepunkte aktivieren/deaktivieren
- tbreak: Einmal unterbrechen und dann den Haltepunkt entfernen
- wo: Zeilennummer, die gerade ausgeführt wird
- Infos Einheimische: Alle lokalen Variablen anzeigen
- Info-Argumente: Alle Funktionsargumente anzeigen
- aufführen: Quelltext anzeigen
- rbruch: Unterbrechung bei Funktion, die mit regulärem Ausdruck übereinstimmt
-
info locals
— Alle lokalen Variablen anzeigen; list — Quelle anzeigen; rbreak – Unterbrechung bei Funktion, die mit regulärem Ausdruck übereinstimmt.– Paul Biggar
27. September 2009 um 10:53 Uhr
-
Quelle /Pfad/zu/Makro/Datei Und all meine raffinierten Makros sind da, um mir beim Debuggen in Sekunden zu helfen.
– Sudhanshu
13. Januar 2010 um 5:19 Uhr
-
set print object on
für polymorphe Elemente undset print elements 0
sind zwei Befehle, die ich sehr oft verwende. Ziemlich nützlich.– Kiril Kirow
17. Juli 2014 um 9:04 Uhr
-
Ebenfalls,
t a a bt
(Bedeutungthread apply all backtrace
). Kann mit (fast) allen anderen Befehlen verwendet werden. Besonders nützlich mitbt full
.– Kiril Kirow
17. Juli 2014 um 9:10 Uhr
-
Sehr nützliche Informationen erhalten in diesem Thread, ich danke Ihnen allen.
– Benutzer28186
14. Juni um 22:26 Uhr
Starten Sie gdb mit einer textuellen Benutzeroberfläche
gdb -tui
-
Ich kann nicht glauben, dass mir diese Funktion all die Jahre entgangen ist. Danke danke danke!
– DevSolar
15. Dezember 2009 um 13:55 Uhr
-
Danke, Sie haben mir viel Zeit gespart. Wunderbar ….
– Sujin
20. Juni 2014 um 12:53 Uhr
-
Und noch eins:
RET – SullX
28. Oktober 2015 um 22:38 Uhr
-
-
sehr schöne funktionen. Hab das bisher vermisst…
– PraveenMax
4. Mai 2017 um 10:43 Uhr
Ab gdb 7.0 gibt es Reversibles DebuggingIhre neuen Lieblingsbefehle sind also:
* reverse-continue ('rc') -- Continue program being debugged but run it in reverse
* reverse-finish -- Execute backward until just before the selected stack frame is called
* reverse-next ('rn') -- Step program backward, proceeding through subroutine calls.
* reverse-nexti ('rni') -- Step backward one instruction, but proceed through called subroutines.
* reverse-step ('rs') -- Step program backward until it reaches the beginning of a previous source line
* reverse-stepi -- Step backward exactly one instruction
* set exec-direction (forward/reverse) -- Set direction of execution.
Anstatt GDB mit dem Parameter “-tui” zu starten, können Sie nach einer Weile auch mit der Eingabe von “wh” in den Textmodus wechseln.
thread apply all bt
oder thread apply all print $pc
: Um schnell herauszufinden, was alle Threads tun.
-
Das war der Befehl, den ich lange gesucht habe! Es ist wirklich fies, alle 30 Threads einzeln zu überprüfen!
– tothphu
28. April 2013 um 23:57 Uhr
-
Sehr nützliche Antwort
– Benutzer28186
14. Juni um 22:27 Uhr
Zum Beispiel die Makros, die in definiert sind stl-views.gdb
-
Das war der Befehl, den ich lange gesucht habe! Es ist wirklich fies, alle 30 Threads einzeln zu überprüfen!
– tothphu
28. April 2013 um 23:57 Uhr
-
Sehr nützliche Antwort
– Benutzer28186
14. Juni um 22:27 Uhr
Scripting gdb ist ein guter Trick, abgesehen davon, dass ich es mag, die Scheduler-Sperre ein- / auszuschalten, um zu verhindern, dass andere Threads ausgeführt werden, wenn Sie in einen einsteigen.
-
Wie stellen Sie die Scheduler-Sperre ein?
– geschickt_code
1. Juni 2010 um 0:09 Uhr
-
set scheduler-locking on
innerhalb gdb– Ben
1. Juni 2010 um 7:54 Uhr
-
wie machst du das zum Standard? Ich habe es mit .gdbinit versucht, aber gdb gibt /home/omry/.gdbinit:1 aus: Fehler in der Quellbefehlsdatei: Ziel „None“ kann diesen Befehl nicht unterstützen.
– Omry Yadan
26. November 2014 um 1:44 Uhr
Ich fand diese Dokumentation gut. scc.ustc.edu.cn/zlsc/sugon/intel/debugger/cl/…
– Rick
31. März 2020 um 4:50 Uhr