[LINUX] Erste gdb

Ich werde erklären, wie man gdb für diejenigen verwendet, die C-Sprache in der Linux-Umgebung debuggen. Für Anfänger.

Was ist gdb

Es ist ein Debugger. Haltepunkte setzen, durchgehen, Sie können in die Variablen schauen, sie neu schreiben und so weiter. Wie gcc wird es standardmäßig unter Linux installiert.

Es ist ein altes Tool, das über die Befehlszeile ausgeführt wird. Dies ist nützlich für das Debuggen in einer Umgebung, in der der IDE-Debugger nicht verwendet werden kann.

Verdienst und Fehler

verdienen: ・ Kann in den meisten Linux-Umgebungen verwendet werden -Kann durch Anhängen an ein laufendes Programm debuggt werden

Fehler: -Es gibt keinen GUI-Bildschirm. Befehle müssen gespeichert werden

Verwendung 1: Starten Sie direkt von gdb

① Kompilieren Sie die Quelldatei auf debuggbare Weise gcc -g3 test.c → a.out wird generiert

(2) Führen Sie die generierte Objektdatei mit dem Befehl gdb aus gdb a.out → Danach werden Sie von gdb aufgefordert, einen Befehl einzugeben.

③ Legen Sie vor der Ausführung einen Haltepunkt fest b test.c: 256 # Unterbrechung in Zeile 256 von test.c b main # function main Machen Sie am Anfang eine Pause

④ Ausführung run

Verwendung 2: Debuggen Sie Programme, die bereits ausgeführt werden

(1) Überprüfen Sie die Prozess-ID (PID) des Programms, das Sie debuggen möchten ps -ef | grep a.out

② anhängen gdb # Ohne Argumente ausführen 12345 anhängen (pid in ↑ bestätigt)

Danach können Sie mit gdb Haltepunkte setzen und Variablen anzeigen. Wenn Sie den Prozess ändern möchten, können Sie einen anderen Prozess trennen und dann anhängen.

Befehlssammlung

Hier sind die Hauptbefehle. Alle sind in Kurzform geschrieben. (zB break-> b)

・ Pausenbezogen

Befehl bewirken
b func1 Setzen Sie einen Haltepunkt auf die Funktion func1
b test.c:123 test.Setzen Sie einen Haltepunkt in Zeile 123 von c
w var1 Setzen Sie den Watchpoint auf die Variable var1
i b Haltepunktliste anzeigen
d no Entfernen Sie Haltepunkte, die Zahlen entsprechen

・ Ausführungsbezogen

Befehl bewirken
n Schrittausführung(Zeile für Zeile ausführen/Funktion überspringt)
s Schrittausführung(Zeile für Zeile ausführen/Gehen Sie in eine Funktion)
c Führen Sie die Verarbeitung bis zum nächsten Haltepunkt aus
f Führen Sie die Verarbeitung aus, bis Sie die aktuelle Funktion verlassen
u Führen Sie die Verarbeitung aus, bis Sie die aktuelle Schleife verlassen
ret -1 Gibt die aktuelle Funktion zurück-Zwangsbeendigung als 1 * Nachfolgende Verarbeitung wird nicht ausgeführt

·Referenz

Befehl bewirken
p var1 Siehe den Wert der Variablen var1
(Wenn es sich um eine Struktur handelt, a.Sie können auf Mitgliedsvariablen mit b verweisen. Wenn es ein Zeiger ist*Sie können den Inhalt mit fp usw. sehen. p strlen(buf)、p buf[3]、p a->Sie können b usw. ziemlich flexibel sehen)
bt Rückverfolgung(Pfad zum Aufrufen der aktuellen Funktion)Show
l Quellcode anzeigen
Info Makro Makroname Überprüfen Sie die Makrodefinition
i lo Alle lokalen Variablen anzeigen

・ Umschreiben des Wertes

Befehl bewirken
p var1=-1 Der Wert der Variablen var1-Wechseln Sie zu 1

Andere Tipps

Detailliertere Informationen

http://flex.phys.tohoku.ac.jp/texi/gdb-j/gdb-j_toc.html http://sourceware.org/gdb/current/onlinedocs/gdb/

Recommended Posts

Erste gdb
Erste Flasche
Erster Entwurf
Test gdb
Erster Python-Review-
Erster Python
Erster Windows 10 Hack
Erster Python 3 ~ Erster Vergleich ~
Erste Django Challenge
Erstes Befehls-Plug-In
Erste Python ~ Codierung 2 ~
Erster Bildklassifikator
Erste Python [O'REILLY]
Erste Django-Entwicklung
[IOS] Erster Pyto