La mise au point des programmes avec gdb
Il est rare qu'un programme fonctionne correctement dès sa première exécution. On risque d'avoir des
problèmes de sémantique : oublier d'initialiser une variable, oublier de confondre le '=' et '= =', oublier
l'opérateur & (adresse de), …
D'où la nécessité d'avoir un outil qui aide à la mise au point des programmes.
La mise au point doit s'effectuer avec un débogueur. Cet outil permet de faire la trace du programme, i.e.
d'exécuter pas à pas ou d'un point d'arrêt à un autre, d'examiner le contenu des variables, ..., ce qui
permet d'identifier la source de l'erreur.
Advertisement
gdb (Gnu DeBugger) est un débogueur open source qui fonctionne à la console et peut être lancé dans
une fenêtre de emacs.
On se propose de voir les différentes commandes offertes par cet outil.
Avant de commencer le débogage proprement dit, il convient de laisser les informations de débogage
(qui sont supprimées par défaut lors de la génération du binaire exécutable pour des raisons
d'optimisation) avec l'option –g passée à l'outil gcc.
Syntaxe :
$gdb nom_exécutable
Advertisement
Maintenant étant sous l'invite de commandes de gdb (généralement (gdb)), on peut taper les commandes
suivantes :
run exécuter
quit quitter
break numéro_ligne ou break nom_fonction placer un point d'arrêt a fin d'interrompre l'exécution
continue Déplacer d'un point d'arrêt à un autre
next Déplacer d'une instruction à la suivante
whatis nom_variable connaître le type d'une variable
Advertisement
print nom_variable afficher le contenu de la variable
print &nom_variable afficher l'adresse de la variable
set nom_variable=valeur Affecter une valeur à une variable
display nom_variable afficher systématiquement le contenu d'une variable
watch nom_variable créer un point d'arrêt si la variable change de valeur
watch condition créer un point d'arrêt conditionnel
info break afficher la liste des points d'arrêt
delete numero_point_arret supprimer le point d'arrêt spécifié par son numéro
Advertisement
delete supprimer tous les points d'arrêt.
clear numéro_ligne ou clear nom_fonction supprimer un point d'arrêt
enable numero_point_arret activer le point d'arrêt spécifié par son numéro
disable numero_point_arret désactiver le point d'arrêt spécifié par son numéro
help [commande] afficher de l'aide sur la commande ou sur l'ensemble des commandes