La mise au point des programmes avec gdb

Computer Programming and Debugging · course

Browse all programmation documents

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