Gdb
Wirbel (Diskussion | Beiträge) (→Analysieren einer Schutzverletzung) |
(→Analysieren einer Schutzverletzung) |
||
Zeile 14: | Zeile 14: | ||
Der Kompiler gcc hat eine Kommandozeilenschalter (-g), welcher den gcc anweist Debugger Informationen in die Objekt- und Ausführbaren Programmdateien zuschreiben. | 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 === | ===Andere Arten, gdb zu benutzen === |
Version vom 17. April 2011, 03:48 Uhr
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.