Die kniffligsten/nützlichsten Befehle für den gdb-Debugger [closed]

Lesezeit: 3 Minuten

Können Sie Ihre kniffligsten und nützlichsten Befehle posten, während Sie einen Debugger wie gdb oder dbx ausführen.

  1. Rücklauf voll: Vollständiger Backtrace mit lokalen Variablen
  2. hoch, Nieder, rahmen: Bewegen Sie sich durch Frames
  3. Uhr: Prozess unterbrechen, wenn eine bestimmte Bedingung erfüllt ist
  4. Druck hübsch einstellen: Druckt hübsch formatierten C-Quellcode aus
  5. Anmeldung einstellen: Debugging-Sitzung protokollieren, um sie anderen zur Unterstützung anzuzeigen
  6. Druckarray einschalten: Hübscher Array-Druck
  7. Fertig: Weiter bis zum Ende der Funktion
  8. ermöglichen und deaktivieren: Haltepunkte aktivieren/deaktivieren
  9. tbreak: Einmal unterbrechen und dann den Haltepunkt entfernen
  10. wo: Zeilennummer, die gerade ausgeführt wird
  11. Infos Einheimische: Alle lokalen Variablen anzeigen
  12. Info-Argumente: Alle Funktionsargumente anzeigen
  13. aufführen: Quelltext anzeigen
  14. 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 und set 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 (Bedeutung thread apply all backtrace). Kann mit (fast) allen anderen Befehlen verwendet werden. Besonders nützlich mit bt 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

  • oder verwenden cgdb

    – Patryk

    3. Juni 2016 um 8:12 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

1423650cookie-checkDie kniffligsten/nützlichsten Befehle für den gdb-Debugger [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy