logo

GDB (Schritt-für-Schritt-Einführung)

GDB steht für GNU Project Debugger und ist ein leistungsstarkes Debugging-Tool für C (zusammen mit anderen Sprachen wie C++). Es hilft Ihnen, in Ihren C-Programmen herumzustöbern, während diese ausgeführt werden, und ermöglicht Ihnen auch zu sehen, was genau passiert, wenn Ihr Programm abstürzt. GDB arbeitet mit ausführbaren Dateien, bei denen es sich um Binärdateien handelt, die durch den Kompilierungsprozess erstellt werden.

Zu Demozwecken wird das folgende Beispiel auf einem Linux-Computer mit den folgenden Spezifikationen ausgeführt.



uname -a>
dein Name

uname -a

Lassen Sie uns lernen, indem wir Folgendes tun: –

Starten Sie GDB

Gehen Sie zu Ihrer Linux-Eingabeaufforderung und geben Sie gdb ein.

gdb>

gdb



Java-Concat-Strings

Die GDB-Open-Eingabeaufforderung informiert Sie darüber, dass sie für Befehle bereit ist. Um GDB zu verlassen, geben Sie quit oder q ein.

quit_gdb

Beenden

Kompilieren Sie den Code

Unten sehen Sie ein Programm, das beim Kompilieren mit C99 undefiniertes Verhalten zeigt. Liste-1



Notiz: Wenn ein Objekt mit automatischer Speicherdauer nicht explizit initialisiert wird, ist sein Wert unbestimmt, wobei der unbestimmte Wert entweder ein nicht spezifizierter Wert oder eine Trap-Darstellung ist.

Kompilieren Sie nun den Code. (hier test.c). g-Flagge bedeutet, dass Sie die richtigen Namen von Variablen und Funktionen in Ihren Stapelrahmen sehen, Zeilennummern abrufen und die Quelle sehen können, während Sie in der ausführbaren Datei herumlaufen. -std=C99-Flag impliziert, dass zum Kompilieren des Codes Standard-C99 verwendet wird. -o Flagge schreibt die Build-Ausgabe in eine Ausgabedatei.

gcc -std=c99 -g -o test test.C>

gcc -std=c99 -g -o test test.C

Führen Sie GDB mit der generierten ausführbaren Datei aus

Geben Sie den folgenden Befehl ein, um GDB mit der kompilierten ausführbaren Datei zu starten.

gdb ./test>

gdb ./test

Nützliche GDB-Befehle:

Hier sind ein paar nützliche Befehle für den Einstieg in GDB.

Befehl Beschreibung
laufen oder r Führt das Programm von Anfang bis Ende aus.
Pause oder b Setzt einen Haltepunkt in einer bestimmten Zeile.
deaktivieren Deaktiviert einen Haltepunkt
aktivieren Aktiviert einen deaktivierten Haltepunkt.
nächster oder n Führt die nächste Codezeile aus, ohne in Funktionen einzutauchen.
Schritt Geht zur nächsten Anweisung und taucht in die Funktion ein.
Liste oder l Zeigt den Code an.
Drucken oder p Zeigt den Wert einer Variablen an.
beenden oder q Verlässt GDB.
klar Löscht alle Haltepunkte.
weitermachen Setzt die normale Ausführung fort

Zeigen Sie den Code an

Geben Sie nun l an der gdb-Eingabeaufforderung ein, um den Code anzuzeigen.

Haltepunkt

Zeigen Sie den Code an

Legen Sie einen Haltepunkt fest

Lassen Sie uns einen Haltepunkt einführen, beispielsweise Zeile 5.

info_b

Legen Sie einen Haltepunkt fest

Wenn Sie Haltepunkte an verschiedenen Zeilen setzen möchten, können Sie b eingeben Zeilennummer .Standardmäßig werden in der Liste oder l nur die ersten 10 Zeilen angezeigt.

Haltepunkte anzeigen

Um die Haltepunkte anzuzeigen, geben Sie info b ein.

deaktivieren

Haltepunkte anzeigen

Deaktivieren Sie einen Haltepunkt

Nehmen wir an, Sie haben Ihre Meinung geändert und möchten zurückkehren, nachdem Sie die oben genannten Schritte ausgeführt haben. Geben Sie „disable b“ ein.

aktivieren-1

Deaktivieren Sie einen Haltepunkt

Aktivieren Sie einen deaktivierten Haltepunkt erneut

Wie im blauen Kreis markiert, wird Enb zu n für deaktiviert. 9. Um den zuletzt deaktivierten Haltepunkt wieder zu aktivieren. Geben Sie „enable b“ ein.

erster Lauf

Aktivieren Sie einen deaktivierten Haltepunkt erneut

int parseint

Führen Sie den Code aus

Führen Sie den Code aus, indem Sie „run“ oder „r“ eingeben. Wenn Sie keine Haltepunkte festgelegt haben, führt der Befehl „run“ einfach das vollständige Programm aus.

print_value_x

Führen Sie den Code aus

Variablenwerte drucken

Um den Wert der Variablen anzuzeigen, geben Sie print ein Variablennamen oder S Variablennamen .

Variablenwerte drucken

Das Obige zeigt die bei x zum Zeitpunkt der Ausführung gespeicherten Werte.

Variablenwerte ändern

Geben Sie set ein, um den Wert einer Variablen in gdb zu ändern und die Ausführung mit dem geänderten Wert fortzusetzen Variablennamen .

Debugging-Ausgabe

Der folgende Screenshot zeigt die Werte von Variablen, aus denen durchaus verständlich ist, warum wir als Ausgabe einen Müllwert erhalten haben. Bei jeder Ausführung von . /prüfen Wir werden eine andere Ausgabe erhalten.

Übung: Versuchen Sie, beim ersten Durchlauf set x = 0 in gdb zu verwenden, und sehen Sie sich die Ausgabe von c an.

Debugging-Ausgabe

GDB bietet viele weitere Möglichkeiten zum Debuggen und Verstehen Ihres Codes, z. B. das Untersuchen von Stack, Speicher, Threads, das Manipulieren des Programms usw. Ich hoffe, das obige Beispiel hilft Ihnen beim Einstieg in GDB.

Abschluss

In diesem Artikel haben wir GDB (GNU Debugger) besprochen, ein leistungsstarkes Tool unter Linux zum Debuggen von C-Programmen. Wir haben einige der folgenden Schritte besprochen, damit wir Ihren Code mit Debugging-Informationen kompilieren, GDB ausführen, Haltepunkte festlegen, Variablen untersuchen und Programmverhalten analysieren können. Wir haben auch die Funktionen von GDB besprochen, wie z. B. Codeprüfung, Haltepunktverwaltung, Variablenmanipulation und Programmausführungskontrolle, die uns ein effizientes Debuggen und Problemlösen ermöglichen.