Übersicht
gdb bietet tiefgreifende Debugging-Funktionen, mit denen Sie den Ausführungsfluss eines Programms steuern, Variablenwerte überprüfen und den Speicherstatus überprüfen können. Es ist besonders nützlich für die Analyse von Problemen in kompilierten Binärdateien.
Hauptfunktionen
- Starten/Stoppen eines laufenden Programms
- Setzen von Haltepunkten (breakpoints)
- Überprüfen und Ändern von Variablenwerten
- Überprüfen von Stack-Traces
- Untersuchen von Speicherinhalten
- Analyse von Core-Dateien
Wichtige Optionen
gdb wird hauptsächlich im interaktiven Modus verwendet, aber Sie können beim Start bestimmte Optionen verwenden, um die anfängliche Konfiguration festzulegen oder nicht-interaktive Skripte auszuführen.
Start-/Verbindungsoptionen
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`gdb` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele
Da gdb häufig interaktiv verwendet wird, enthalten die Beispiele auch Befehle, die innerhalb der gdb-Eingabeaufforderung eingegeben werden.
Start einer grundlegenden Debugging-Sitzung
gdb ./my_program
Lädt das kompilierte Programm (z. B. my_program) mit gdb, um eine Debugging-Sitzung zu starten.
Haltepunkt setzen und ausführen
gdb ./my_program
(gdb) b main
(gdb) r
Setzt einen Haltepunkt in der main-Funktion und führt das Programm aus. Die Ausführung wird am Haltepunkt angehalten.
Variablenwert überprüfen
gdb ./my_program
(gdb) b my_function
(gdb) r
(gdb) p my_variable
Nachdem die Ausführung am Haltepunkt angehalten wurde, wird der aktuelle Wert einer bestimmten Variablen ausgegeben.
Core-Datei analysieren
gdb ./my_program core.dump
Analysiert die Core-Datei, die durch einen Programmabsturz generiert wurde, um den Zustand des Programms zum Zeitpunkt des Absturzes zu untersuchen.
An einen laufenden Prozess anhängen
gdb -p 12345
Hängt gdb an die Prozess-ID (PID) 12345 an, die bereits läuft, um sie zu debuggen.
Befehle beim Start automatisch ausführen
gdb -ex 'b main' -ex 'r' ./my_program
Setzt einen Haltepunkt in der main-Funktion und führt das Programm gleichzeitig mit dem Start von gdb aus.
Installation
gdb ist auf den meisten Linux-Distributionen nicht standardmäßig verfügbar und muss als Teil eines Entwicklungswerkzeugpakets installiert werden.
Debian/Ubuntu
sudo apt update && sudo apt install gdb
Installiert gdb mit dem APT-Paketmanager.
Fedora/CentOS/RHEL
sudo dnf install gdb
Installiert gdb mit dem DNF- oder YUM-Paketmanager.
Tipps & Hinweise
Tipps und Hinweise zur effektiven Nutzung von gdb.
Debug-Informationen beim Kompilieren einschließen
Um mit gdb debuggen zu können, müssen Sie das Programm mit der Option `-g` kompilieren, um Debug-Informationen einzuschließen. Andernfalls können Sie keine Quellcode-Informationen oder Variablennamen sehen.
- Beispiel: `gcc -g myprogram.c -o myprogram`
Häufig verwendete gdb-Befehle
Dies sind die wichtigsten Befehle, die häufig in der gdb-Eingabeaufforderung verwendet werden.
- `b <Funktionsname/Zeilennummer>`: Haltepunkt setzen (breakpoint)
- `r`: Programm ausführen (run)
- `n`: Nächste Zeile (next)
- `s`: In Funktion eintreten (step)
- `p <Variablenname>`: Variablenwert ausgeben (print)
- `c`: Bis zum nächsten Haltepunkt fortfahren (continue)
- `q`: gdb beenden (quit)
TUI-Modus nutzen
Durch die Nutzung des Text User Interface (TUI)-Modus von gdb können Sie die Debugging-Effizienz verbessern, indem Sie gleichzeitig Quellcode, Register und Assembler anzeigen.
- `gdb -tui <program>` oder verwenden Sie den Befehl `layout src` innerhalb von gdb