Startseite > Umgebung & Hilfsprogramme > gdb

gdb: GNU Debugger

gdb (GNU Debugger) ist ein leistungsstarkes Werkzeug zur Analyse und zum Debuggen von Programmen, die in verschiedenen Programmiersprachen wie C, C++ und Fortran geschrieben sind. Es ist unerlässlich, um das interne Verhalten von Programmen zu verstehen und Fehler zu finden und zu beheben. Es unterstützt verschiedene Debugging-Szenarien, wie z. B. das Anhängen an laufende Prozesse oder die Analyse von Core-Dateien.

Ü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

Gleiche Kategorie Befehle