Benutzer-Werkzeuge

Webseiten-Werkzeuge


topics:gdb

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
topics:gdb [2014/11/08 22:19] ninuxtopics:gdb [2014/11/15 20:13] (aktuell) – [Makefile] ninux
Zeile 42: Zeile 42:
 </code> </code>
  
 +==== Makefile ====
 +<code make |Makefile>
 +CFLAGS = -I. -lm -std=gnu11
 +SOURCES = main.c
 +
 +.PHONY: all clean
 +
 +main:
 +        gcc $(CFLAGS) -o main.o $(SOURCES)
 +        
 +debug:
 +        gcc $(CFLAGS) -g -o debug.o $(SOURCES) -DDEBUG
 +        
 +all:
 +        gcc $(CFLAGS) -o main.o $(SOURCES)
 +        gcc $(CFLAGS) -g -o debug.o $(SOURCES) -DDEBUG
 +
 +clean:
 +        rm main.o
 +        rm debug.o
 +</code>
 ==== Compiler-Option ==== ==== 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. 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.
Zeile 51: Zeile 72:
 Um das kompilierte Programm (''debug.o'') zu debuggen, kann einfach GDB gestartet werden in der Kommandozeile. Um das kompilierte Programm (''debug.o'') zu debuggen, kann einfach GDB gestartet werden in der Kommandozeile.
 <code shell> <code shell>
-[user@machine ]$ gdb+$ gdb
 </code> </code>
  
Zeile 66: Zeile 87:
 Reading symbols from main.o...(no debugging symbols found)...done. Reading symbols from main.o...(no debugging symbols found)...done.
 </code> </code>
-sollte überprüft werden, ob die Compiler-Option ''-d'' gesetzt wurde beim kompilieren.+sollte überprüft werden, ob die Compiler-Option ''-g'' gesetzt wurde beim kompilieren.
  
 ==== Breakpoint setzen ==== ==== Breakpoint setzen ====
Zeile 97: Zeile 118:
  
 ==== Weiterfahren nach Breakpoint ==== ==== Weiterfahren nach Breakpoint ====
-Is das Programm stehen geblieben bei einem Breakpoint so kann man es weiter laufen lassen mittels ''step'', ''next'' oder ''continue''. ''continue'' läuft dabei einfach weiter bis wieder ein Breakpoint oder ähnliches erreicht wird. ''next'' und ''step'' dienen zum schrittweisen durchlaufen des Programms. Im Unterschied zu ''next'' geht ''step'' auch durch sämtliche Subroutinen durch, ''next'' dagegen behandelt Subroutinen wie einzelne Befehle.+Ist das Programm stehen geblieben bei einem Breakpoint so kann man es weiter laufen lassen mittels ''step'', ''next'' oder ''continue''. ''continue'' läuft dabei einfach weiter bis wieder ein Breakpoint oder ähnliches erreicht wird. ''next'' und ''step'' dienen zum schrittweisen durchlaufen des Programms. Im Unterschied zu ''next'' geht ''step'' auch durch sämtliche Subroutinen durch, ''next'' dagegen behandelt Subroutinen wie einzelne Befehle.
 <code shell> <code shell>
 (gdb) continue  (gdb) continue 
Zeile 107: Zeile 128:
  
 ==== Variableninhalt anzeigen ==== ==== Variableninhalt anzeigen ====
-Um bei einem Breakpoint Variableninhalte anzeigen zu lassen, kann das Kommando ''print'' (dezimal) bzw. ''print/x'' (hexadecimal) verwendet werden. Das folgende Beispiel zeigt die Ausgabe für die Variablen ''c'' und ''a'' zur Zeile 12 aus ''main.c''+Um bei einem Breakpoint Variableninhalte anzeigen zu lassen, kann das Kommando ''print'' (dezimal) bzw. ''print/x'' (hexadecimal) verwendet werden. Das folgende Beispiel zeigt die Ausgabe für die Variablen ''c'' und ''a'' zur Zeile 12 aus ''main.c'' je einaml dezimal und einmal hexadezimal.
 <code shell> <code shell>
 (gdb) print c (gdb) print c
Zeile 120: Zeile 141:
  
 ==== Info zu Breakpoints anzeigen ==== ==== Info zu Breakpoints anzeigen ====
-Um eine Übersicht der aktuellen Breakpoints zu bewahren gibt es das Kommando ''info breakpoints'' welches alles Breakpoints auflistet.+Um eine Übersicht der aktuellen Breakpoints zu erhalten kann das Kommando ''info breakpoints''verwendet werden. Dieses listet sämtliche Breakpoints auf.
 <code shell> <code shell>
 (gdb) info breakpoints  (gdb) info breakpoints 
Zeile 127: Zeile 148:
 2       breakpoint     keep y   0x0000000000400530 in main at main.c:12 2       breakpoint     keep y   0x0000000000400530 in main at main.c:12
 </code> </code>
 +
 +===== Graphische front-ends =====
 +Ein bekanntes graphisches front-end für den GDB ist [[http://www.gnu.org/software/ddd/|DDD]]. DDD verfügt über mehrere Teilfenster innerhalb der Anwendung, je eines für die GDB session, die aktuelle Quelldatei und optional noch diverse Grafiken. Wie bei bekannten IDEs werden auch hier Breakpoints und der aktuelle Standort in der Quelldatei graphisch angezeigt.
 +===== Literatur =====
 +  * GDB - kurz & gut, O'Reilly, ISBN 3-89721-512-8, im LuXeria verfügbar
 +
 +===== Weblinks =====
 +  * [[http://www.cs.umd.edu/~srhuang/teaching/cmsc212/gdb-tutorial-handout.pdf|Kurzpräsentation GDB (englisch, PDF)]]
 +  * [[http://www.gnu.org/software/gdb/|GDB - Projektseite]]
 +  * [[http://www.gnu.org/software/ddd/|DDD - Projektseite]]
  
 ---- dataentry topic ---- ---- dataentry topic ----
Zeile 133: Zeile 164:
 beginner_users : ninux beginner_users : ninux
 wannabe_users  : # wannabe_users  : #
-category_topictags : #+category_topictags : software, programming
 ---- ----
topics/gdb.1415485199.txt.gz · Zuletzt geändert: 2014/11/08 22:19 von ninux

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki