Writing /net/www/auesnard/teaching/data/meta/projtec/gdb.meta failed
projtec:gdb
This is an old revision of the document!
Table of Contents
Déboguage
- KCacheGrind
- GCov
Voici 4 cas de figures très classiques :
- Votre programme plante à chaque exécution ? Réflexe : relancer le programme avec gdb et/ou valgrind.
- Votre programme boucle à l'infinie à chaque exécution ? Réflexe : lancer le programme avec gdb, puis faire un “break” dans le programme pour voir ou ça boucle puis bt, next, print, watch …
- Votre programme plante de temps en temps ? Réflexe : autoriser préalablement la génération des fichiers core (ulimit -c 100000) et lorsque le programme plante, lancer gdb sur le fichier core généré.
- Votre programme boucle de temps en temps ? Réflexe : lancer gdb et attacher gdb au processus de votre programme.
Valgrind
todo
Compilation & Exécution avec GDB
Il est nécessaire au préalable de compiler son code C avec les CFLAGS “-g” et eventuellement “-O0” pour désactiver les optimisations du compilateur. Penser également à compiler avec “-Wall” pour afficher tous les warnings.
gcc -Wall -g -O0 monprog.c -o monprog gdb ./monprog (gdb) r
Memento GDB
- quit (q) : quitter gdb
- run ('r') : lancer l’execution
- break <func>, watch <var>, clear, delete (b,w,cl,d) : introduire un point d’arrêt, ou bien “surveiller” une variable
- step, next, continue, finish (s,n,c) : avancer d’un pas (en entrant ou pas dans les sous-fonctions), relancer jusqu’au prochain point d’arrêt, finir la fonction courante
- print <var>, list (p, l) : afficher la valeur d’une variable, afficher le code
- backtrace / frame <num> : afficher la pile d’execution, changer de frame, …
- display <var> / undisplay <numvar> : suivre une variable…
- x <addr> : examiner le contenu de la mémoire à une adresse donnée…
(gdb) list (gdb) b numligne (gdb) b fichier.c:numligne (gdb) b nomfunction
Pour afficher quelques trucs :
(gdb) bt (gdb) frame 2 (gdb) info args (gdb) info locals (gdb) p x
Utilisation d'un fichier core
ulimit -c 100000 # autoriser la création de fichier core de 100 MB ./monprog segmentation fault! core dumped. gdb ./monprog core (gdb)
Attacher GDB à un processus
./monprog ps # on voit le pid 12271 gdb -p 12271
ou
gdb monprog 12271
ou
gdb monprog (gdb) attach 12271
projtec/gdb.1510656645.txt.gz · Last modified: 2024/03/18 15:05 (external edit)