Benutzer-Werkzeuge

Webseiten-Werkzeuge


topics:gdb

Dies ist eine alte Version des Dokuments!


GDB

GDB (GNU Debugger) ist ein weit verbreiteter Debugger für diverse Sprachen wie C, C++ und Java. GDB ist ein Kommandozeilen-Programm und lässt sich somit relativ einfach bedienen.

Wichtige Kommandos

Kommando Beschreibung
file Programm angeben zum debuggen
watch Variable beobachten
break Breakpunkt setzen
run Programm starten
continue Programm fortfahren
step nächsten Schritt ausführen (auch in Subroutinen)
next nächsten Schtitt ausführen (Subroutinen überspringen)
print Variableninhalt dezimal ausgeben
print/x Variableninhalt hexadezimal ausgeben
finish Programm laufen lassen bis Funktion beendet ist
delete Breakpunkt löschen
info breakpoints Informationen zu den gesetzten Breakpoints

Beispiel

Programmcode

|main.c
#include <stdio.h>                      /*  1 */
                                        /*  2 */
int main(int argv, char **argc)         /*  3 */
{                                       /*  4 */
        int a, b, c;                    /*  5 */
                                        /*  6 */
        c = 0;                          /*  7 */
        a = 5;                          /*  8 */
        b = 2;                          /*  9 */
                                        /* 10 */
        c += a;                         /* 11 */
        c += b;                         /* 12 */
                                        /* 13 */
        printf("%i", c);                /* 14 */
                                        /* 15 */
        return 0;                       /* 16 */
}                                       /* 17 */

Compiler-Option

Um das obige main.c zu kompilieren könnte man gcc -o main.o main.c verwenden. Um aber das Debugging zu ermöglichen muss die Option -g hinzugefügt werden.

gcc -g -o debug.o main.c

GDB starten

Um das kompilierte Programm (debug.o) zu debuggen, kann einfach GDB gestartet werden in der Kommandozeile.

[user@machine ]$ gdb

Datei laden

Ist GDB gestartet kann die datei debug.o angegeben werden zum debuggen.

(gdb) file debug.o
Reading symbols from debug.o...done.

Sollte eine Fehlermeldung auftreten wie die folgende

(gdb) file main.o
Reading symbols from main.o...(no debugging symbols found)...done.

sollte überprüft werden, ob die Compiler-Option -d gesetzt wurde beim kompilieren.

Breakpoint setzen

Um einen Breakpunkt zu setzten muss lediglich der Name der Quelldatei und die Zeilennummer angegeben werden. Das folgede Beispiel setzt einen Breakpunkt im main.c auf Zeile 5 und 14

(gdb) break main.c:5
Breakpoint 1 at 0x400515: file main.c, line 5.
(gdb) break main.c:14
Breakpoint 2 at 0x400536: file main.c, line 14.
type:
topic
beginner:
ninux
topics/gdb.1415483631.txt.gz · Zuletzt geändert: 2014/11/08 21:53 von ninux

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki