Gdb

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Der GNU Debugger, normalerweise GDB abgekürzt, ist der Standard-Debugger des GNU-Projekts. Als debuggen wird das auffinden, diagnostizieren und eliminieren von Fehlern bezeichnet.

Ein Werkzeug zur Fehlerbereinigung von Software nennt sich Debugger. Der Debugger ermöglicht in der Regel eine Ablaufverfolgung des zu untersuchenden Programmes in einzelnen Schritten oder zwischen definierten Haltepunkten.

Inhaltsverzeichnis

Einführung

Dieses ist eine sehr kurze Einleitung in die Anwendung von GDB. Gerichtet ist sie an Anwender, die ein ernstes Problem mit dem VDR, einen Plugin oder einer anderen Anwendung hat, und mithelfen möchte indem er Debugger-Ausgaben dem Entwickler oder Betreuer dieses Programmes, als ausführliche Informationen des Problemes übergibt.

Debugger Ausgaben

Programme können zusätzlich eingebaute Debugger Informationen enthalten. GDB kann die Debugger Informationen verwenden, um ausführlichere Informationen zur Verfügung zu stellen (wie Funktion Prototypen, Quellcode-Dateinamen und Zeilenzahlen,...). Falls ein Programm Debugger Informationen enthält ist es sinnvolle diese jetzt zu aktivieren.

Der Kompiler gcc hat eine Kommandozeilenschalter (-g), welcher den gcc anweist Debugger Informationen in die Objekt- und Ausführbaren Programmdateien zuschreiben.

Cool! That's a clever way of lkonoig at it!

Andere Arten, gdb zu benutzen

Du kannst eine Anwendung unter vollständig Steuerung des gdb starten. Um das zu tun genügt gdb Anwendung. In der gdb Eingabeaufforderung verwende run Parameter, um die Anwendung zu starten. Wenn die Anwendung ein Signal empfängt, wird gdb die Eingabeauforderung zeigen um Befehle dazu einzugeben. Du kannst jederzeit Strg-C drücken, um eine gdb Eingabeauforderung zu erhalten.

Die nützlichsten gdb Befehle sind

  • bt - Ausgabe eines stacktrace (siehe obrige Ausführung).
  • up/down - Navigation innerhalb des strackframe
  • thread [Nummer] - Anzeige des aktuellen Thread / Wechsel zu einem anderem Thread mit der angegebenen Nummer.
  • c - Fortsetzen der gestarteten Anwendung.
  • print Ausdruck - den Wert des spezifizierten Ausdruckes ausgeben. Kann verwendet werden, den Wert bestimmter Variablen zum Beispiel zu kontrollieren, spezifizieren einfach den variablen Namen als Ausdruck
(gdb) up
#1  0xb7e05f6e in _int_free () from /lib/tls/libc.so.6
(gdb) up
#2  0xb7e04dcb in free () from /lib/tls/libc.so.6
(gdb) up
#3  0x081066b6 in ~cFrame (this=0x8f17110) at ringbuffer.c:352
352       free(data);
(gdb) print data
$1 = (uchar *) 0x8f3a920 ""
  • quit - beendet gdb.

Laufende Prozesse debuggen

Es ist auch möglich, gdb an einem bereits laufenden Prozeß anzudocken. Dieses kann mit gdb --pid=`pidof Anwendung` getan werden. gdb dockt am Prozeß an, der durch die Prozeßkennzeichnung spezifiziert wird, die könnte nützlich sein, wenn die Anwendung, in einer Endlos-Schleife verweilt und du feststellen möchtest, wo sie genau hängt.