Der normale Prozess für die Entwicklung von Computerprogrammen sieht ungefähr so ​​aus: Schreiben Sie Code, kompilieren Sie den Code, führen Sie das Programm aus. Wenn das Programm nicht wie erwartet funktioniert, gehen Sie zurück zum Code, um nach Fehlern (Fehlern) zu suchen und wiederholen Sie den Zyklus erneut.

Abhängig von der Komplexität des Programms und der Art der Fehler gibt es Zeiten, in denen Sie zusätzliche Hilfe beim Aufspüren der Fehler benötigen. Dies ist, was ein "Debugger" tut. Es ermöglicht Ihnen, ein Computerprogramm zu untersuchen, während es ausgeführt wird. Sie können die Werte der verschiedenen Variablen sehen, Sie können den Inhalt des Speichers untersuchen und Sie können das Programm an einem bestimmten Punkt anhalten und den Code Zeile für Zeile durchlaufen.

Der primäre Debugger unter Linux ist der GNU-Debugger (gdb). Möglicherweise ist es bereits auf Ihrem System installiert (oder eine abgespeckte Version namens gdb-minimal), aber geben Sie den folgenden Befehl in ein Terminal ein:

 sudo apt-get installieren gdb 

Um den Debugger zu verwenden, müssen Sie dem Compiler mitteilen, Debuginformationen in die Binärdatei aufzunehmen. Erstellen Sie eine Datei namens "hello10.c" mit nano:

 Nano hallo10.c 

Kopieren und fügen Sie den folgenden Code ein:

 #include main () {int i; für (i = 0; i <10; i ++) printf ("% d", i); } 

Das "-g" -Flag weist den Compiler an, Debug-Informationen zu erzeugen, um so das Programm zu kompilieren:

 gcc -g -o Hallo10 Hallo10.c 

Um das Debuggen des Programmtyps zu starten, gehen Sie folgendermaßen vor:

 gdb hallo10 

An dieser Stelle, wenn Sie einfach das Programm starten (mit dem Befehl "run"), wird das Programm ausgeführt und beendet, bevor Sie die Möglichkeit haben, etwas zu tun. Um dies zu stoppen, müssen Sie einen "Haltepunkt" erstellen, der das Programm an einem bestimmten Punkt stoppt. Der einfachste Weg dies zu tun ist, den Debugger anzuweisen, in der Funktion "main ()" zu stoppen:

 Pause Haupt 

Starten Sie jetzt das Programm:

 Lauf 

Der Debugger hat bei der ersten ausführbaren Codezeile angehalten, zB die "for" -Schleife. Um zur nächsten Zeile zu gelangen, tippen Sie kurz "next" oder "n". Benutze "next", um die Schleife ein paar Mal zu wiederholen:

Um den Wert einer Variablen zu prüfen, verwenden Sie den Befehl "Drucken". In unserem Beispielprogramm können wir den Inhalt der Variablen "i" untersuchen:

 drucke ich 

Wiederholen Sie die Schleife und noch einige Male und sehen Sie, wie sich "i" ändert:

 nächstes nächstes nächstes nächstes drucken i 

Im obigen Beispiel hat "i" den Wert 4 erreicht. Die Schleife wird fortgesetzt, wenn "i" kleiner als 10 ist. Sie können den Wert einer Variablen mit "set var." Geben Sie Folgendes in gdb ein, um "i" auf 10 zu setzen.

 setze var i = 10 drucke ich als nächstes 

Sie müssen möglicherweise eine andere "nächste" (abhängig davon, wo das Programm angehalten wurde, wenn Sie "i" auf 10 setzen), aber wenn die Schleife "für" als nächstes ausgeführt wird, wird die Schleife beendet, weil "i" ist nein länger als 10.

Der "next" -Befehl führt nicht zu Funktionen, sondern die Funktion wird ausgeführt, und der Debugger stoppt erneut in der nächsten Zeile nach der Funktion. Wenn Sie in eine Funktion einsteigen wollen, verwenden Sie den Befehl "step" oder kurz "s".

Eine weitere Möglichkeit, Ihr Programm zu debuggen, besteht darin, eine Überwachung für eine Variable festzulegen. Das bedeutet, dass das Programm angehalten wird, wenn sich die Variable ändert. Starten Sie das Programm erneut, indem Sie "run" eingeben. Da das Programm bereits ausgeführt wird, fragt der Debugger, ob Sie es von Anfang an neu starten möchten.

Das Programm stoppt in main (da wir den Breakpoint nicht entfernt haben). Jetzt watch "i":

 schaue ich weiter 

Der "continue" -Befehl startet das Programm bis zur nächsten Knickpunktbedingung. In diesem Fall wird es erneut ausgeführt, bis sich die Variable "i" (aufgrund der Uhr) ändert.

Um das Debuggen zu beenden, verwenden Sie einfach den Befehl "quit".

Wenn Sie mehr über gdb erfahren möchten, ist die GDB-Dokumentation ein guter Ausgangspunkt. Wenn Sie Probleme mit den oben genannten Beispielen haben, verwenden Sie bitte den unten stehenden Kommentarbereich und wir werden sehen, ob wir Ihnen helfen können.