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

CommandesRaccourcisEffets et exemples
quitqon quitte le débogueur
breakpoint 15b 15met un point d'arrêt à la ligne 15
breakpoint bloup.c:15b bloup.c:15met un point d'arrêt à la ligne 15 du fichier bloup.c
breakpoint dfsb dfsmet un point d'arrête au début de la fonction dfs
watch xw xon s'arrête à chaque fois que la variable x change
print xp xon affiche la valeur de la variable x
listlon affiche l'endroit dans le code où on est
stepson fait un pas dans l'exécution du programme
nextnon fait un pas mais en considérant un appel de fonction au niveau courant comme atomique
continuecon continue l'exécution jusqu'au prochain point d'arrêt
backtracebtOn affiche la pile d'exécution (la pile d'appels)
clear 15enlève le point d'arrêt à la ligne 15
clear dfsenlève le point d'arrête au début de la fonction dfs
deletesupprime tous les points d'arrêt
delete 2supprime le deuxième point d'arrêt / watchpoint