Débugueur gdb
Le débugueur gdb
(pour GNU Debugger) permet d'arrêter le programme (points d'arrêt) et d'inspecter des variables, la pile d'appel etc.
Mise en place
L'utilisation de gdb se fait sur l'exécutable directement. Mais il faut donc que l'exécutable contienne des données supplémentaires pour permettre le débogage. Pour cela on utilise le flag -g
par exemple
gcc -Wall -g programme.c -o programme
Avec -g
, l'exécutable contient des informations de débogage (liens entre code machine et numéro de lignes dans le code source) pour que gdb
puisse nous raconter des choses :
Utilisation de gdb
On lance le programme en mode débogage en faisant
gdb programme
On a alors un invite de commande pour réaliser le débogage. On peut toujours quitter le débogueur en tapant quit
.
Points d'arrêt
Un point d'arrêt est un endroit du programme où le débogueur doit arrêter l'exécution.
Commandes
Commandes | Raccourcis | Effets et exemples |
---|---|---|
quit | q | on quitte le débogueur |
breakpoint 15 | b 15 | met un point d'arrêt à la ligne 15 |
breakpoint bloup.c:15 | b bloup.c:15 | met un point d'arrêt à la ligne 15 du fichier bloup.c |
breakpoint dfs | b dfs | met un point d'arrête au début de la fonction dfs |
watch x | w x | on s'arrête à chaque fois que la variable x change |
print x | p x | on affiche la valeur de la variable x |
list | l | on affiche l'endroit dans le code où on est |
step | s | on fait un pas dans l'exécution du programme |
next | n | on fait un pas mais en considérant un appel de fonction au niveau courant comme atomique |
continue | c | on continue l'exécution jusqu'au prochain point d'arrêt |
backtrace | bt | On affiche la pile d'exécution (la pile d'appels) |
clear 15 | enlève le point d'arrêt à la ligne 15 | |
clear dfs | enlève le point d'arrête au début de la fonction dfs | |
delete | supprime tous les points d'arrêt | |
delete 2 | supprime le deuxième point d'arrêt / watchpoint |