Frage

Können Sie Ihre heikelsten und nützliche Befehle schreiben, während Sie einen Debugger wie gdb oder dbx ausgeführt werden.

War es hilfreich?

Lösung

  1. Backtrace voll : Komplette Backtrace mit lokalen Variablen
  2. bis unten Rahmen : Bewegen durch Rahmen
  3. sehen : Hängen Sie den Vorgang, wenn eine bestimmte Bedingung erfüllt ist
  4. gesetzt Druck ziemlich auf : Druckt hübsch formatierten C-Quellcode
  5. gesetzt Protokollierung auf : Log-Sitzung Debuggen von anderen zur Unterstützung zeigen
  6. gesetzt Druckarray auf : Hübsches Reihendruck
  7. Finish : Weiter bis zum Ende der Funktion
  8. enable und deaktivieren : Aktivieren / Deaktivieren der Haltepunkte
  9. tbreak : Break einmal, und dann den Haltepunkt entfernen
  10. mit : Zeilennummer gerade ausgeführt wird,
  11. info Einheimischen : Alle lokalen Variablen
  12. info args : Alle Funktionsargumente
  13. Liste : view source
  14. RBREAK : Pause auf Funktion passenden regulären Ausdruck

Andere Tipps

Starten Sie GDB mit einer Text Benutzeroberfläche

gdb -tui

in gdb starten 7.0 gibt es reversible Debuggen , so dass Ihr neues Lieblings Befehle sind:

* 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.

Statt GDB der Einführung mit „-tui“ Param Sie auch in dem Textmodus nach einer gewissen Zeit wechseln können mit durch Eingabe von „wh“.

thread apply all bt oder thread apply all print $pc. Für schnell herauszufinden, was alle Themen tun

Zum Beispiel die Makros in stl-views.gdb

Mit der Option -command=<file with gdb commands> während gdb Anheizen. Gleich wie -x <command file>. Diese Befehlsdatei gdb Befehle wie Breakpoints, Optionen usw. nützlich, wenn eine bestimmte ausführbare werden muss, setzen durch aufeinanderfolgende Debug enthalten läuft gdb verwenden.

Scripting GDB ist ein guter Trick, anders als das Ich mag Set-Scheduler Sperren / Ausschalten der Betrieb von anderen Threads zu verhindern, wenn Sie in einem verstärken.

Statt gdb mit der Option -tui das Startens ein Kind Prozess, um zu sehen, die einen Bildschirm enthält, die hervorhebt, wo die Ausführung Codezeile in Ihrem Programm ist, springen und aus dieser Funktion mit C-x o und C-x ein. Dies ist nützlich, wenn Sie die Funktion verwenden und was vorübergehend nicht zu verwenden, so dass Sie den Pfeil nach oben können Sie einen vorherigen Befehl erhalten.

  • Mit .gdbinit (Start-up-Datei, wo Sie Makros und rufen von GDB schreiben kann). Platz in Ihrem Home-Verzeichnis .gdbinit, so dass es abgeholt wird, wird jedes Mal, GDB geladen
  • info threads , um eine Liste aller aktiven Threads, und f (#) -> # Thread-Nummer Sie auf

  • irgendwann verwenden i gdb aus hex zu konvertieren oder binär in dezimal, es ist sehr praktisch, einen Rechner statt Öffnung

    • p / d 0x10 -> gibt Dezimaläquivalents von 0x10
    • p / t 0x10 -> binäre Äquivalent von 0x10
    • p / x 256 -> Hex-Äquivalent von 256

Dies kann nützlich sein, ich bin sicher, dass es aber verbessert werden könnte, helfen willkommen:

define mallocinfo
  set $__f = fopen("/dev/tty", "w")
  call malloc_info(0, $__f)
  call fclose($__f)

Debug-STL, fügen Sie Inhalt .gdbinit, gehen Sie folgendermaßen vor:

http://www.yolinux.com/TUTORIALS/GDB-Commands. html # STLDEREF

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top