Die Übersichtlichkeit der Seite wird durch Javascript erhöht. Ist dies aktiviert, werden die Texte unter den Überschriften durch Anklicken der Überschriften ein- und ausgeblendet.
Der GNU Debugger ist ein hilfreiches Komandozeilenwerkzeug, mit dem es möglich ist, ein Programm zu Debuggen.
Natürlich muss der gdb im Vorfeld installiert werden.
Das Programm muss mit der Compilerotion -g kompiliert werden, damit die Debuggerinformationen bereit stehen.
Programm dem Debugger übergeben
gdb programmname
Mit dem Befehl list wird der Programmcode standardmäßig 10 Zeilenweise ausgegeben. Bei wiederholten eingeben werden die folgenden Zeilen aufgelistet.
Möchte man den Programmablauf an einer bestimmten Stelle unterbrechen, so setzt man einen sogenannten Breakpoint. Dies ist einfach mit dem Befehl break zeilennummer möglich. Ein breakpoint kann auch von einer bestimmten Bedingung abhängig gemacht werden:
break Zeilennummer if (Bedingung)
Wobei die Bedingung Variablen des aktuellen Programms enthalten kann und der Ausdruck der Syntax einer Programmiersprache, die gdb verständlich ist entsprechen muss.
Bedingungen eines bedingten breakpoints ändern
Dies ist mit dem Befehl condition möglich
Mit 'info break' können alle breakpoints aufgelistet werden.
Breakpoints löschen / deaktivieren
Ein mit disable deaktivierter Breakpoint kann mit 'enable' einfach wieder aktiviert werden.
Im Gegensatz zum Breakpoint ist, hält ein Watchpoint an, wenn eine bestimmte Bedingung erfüllt ist.
Das Programm wird dann mit dem Befehl run gestartet. Und läuft ganz normal bis zum Breakpoint.
step - In Funktionen absteigen
Führt die nächste Codezeile aus und springt dabei auch in eventuell aufgerufene Funktionen ab.
next - Funktion ausführen und im aktuellen Codeblock weiter machen
Führt die nächste Codezeile aus ohne eine darin vorkommende Funktion zu tracen. Die Funktion wird stillschweigend ausgeführt und es geht mit der weiteren Bearbeitung innerhalb des aktuellen Codeblocks nach der Ausführung der Funktion weiter.
Übersicht über den Quellcode an der aktuellen Stelle
Einfach wie gewohnt list eingeben.
Bis zu einer bestimmten Zeile weitergehen
until Zeilennummer
Mit dem Befehl print kann auch ein Wert gesetzt werden um das Verhalten bei einem bestimmten Wert einer Variable zu studieren.
print Variablenname = neuerWERT
Die angezeigten $-Werte sind interne Variablen, die für die Variable stehen. Somit kann der Wert der Variable auch einfach angezeigt werden durch:
print $Variablennummer
Der Befehl lautet einfach: x
x kann man eine Speicheradresse übergeben. x akzeptiert zusätzlich einen Zähler und eine Typdefinition als optionales Argument übergeben werden. Der Zähler gibt an wieviele Objekte des definierten Typs angezeigt werden sollen. Beispiel:
x/100x 0x4200
zeigt 100 Bytes an Daten in hexadezimaler Darstellung ab der Adresse 0x4200 an.
Die möglichen Ausgabeformate lassen sich mit 'help x' anzeigen.
help info zeigt alle Möglichkeiten. Hier einige nützliche:
zeigt Informationen zum Ablaufstatus des Programms
Zeigt alle Namen und Werte der aktuellen Funktion an
Zeigt alle Variablen die den Programm bekannt sind, auch die aus eingebundenen Bibliotheken an, wobei die Programmfremden Variablen ohne Wert aufgelistet werden.
Zeigt eine Liste aller Breakpoint und Watchpoints samt ihres Status an.
Aktuelle Funktion bis zu ihren Ende ablaufen lassen
finish
quit