Débogage

Objectif : éliminer les erreurs dans les programmes → débogueur

Déboguer un programme consiste à l'arrêter sous certaines conditions pour examiner l'état de la pile d'appels et les valeurs stockées dans les variables.

L'utilisation d'un débogueur nécessite l'ajout de l'option -g à la compilation.

Conseils avant de de déboguer :

  • Aérer le code de commentaires
  • Indenter les lignes du code
  • Aucune optimisation de code
  • Afficher les messages de compilation

Tout d'abord on compile le programme avec l'option -g

$ gcc -g  program.c -o program

Puis on lance le débogueur :

[user@mesocomte0 matmul]# gdb matmul_for_debug.exe 
GNU gdb Fedora (6.8-27.el5)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu"...
(gdb) 

Une console s'affiche et invite l'utilisateur à taper des commandes de débogage.

La liste des commandes de débogage les plus utilisées :

Commande Description
r <param>Exécute le programme : r param1 param2
l <ligne> Liste le programme source : l. Affiche uniquement la ligne <ligne> : l 29. Si plusieurs fichiers sources : l toto.c:29
b <ligne>b (Breakpoint) un point d'arrêt : b 30. b main. Un point d'arrêt conditionnel: b 3 Z > 92
cc (Continue continue) l'exécution après un arrêt
display varAffiche le contenu d'une variable : display toto
printfAffichage formaté des variables : printf "X = %d, Y = %d\n",X,Y
nn (Next) exécute la ligne suivante du programme et PAUSE
ss (Step) exécute la 1ere ligne de la fonction suivante et PAUSE
btbt (Backtrace) indique l'emplacement de l'erreur dans le programme

idb est un débogueur symbolique textuel fourni avec les compilateurs d'Intel. FIXME