Le but de cette page est de vous donner les indications de bases vous permettant par la suite d'apprendre à utiliser un outil de déverminage (debugging en anglais).
L'aide ci-présente n'est constituée que de capture d'écran et d'un petit texte.
Lorsque les images sont trop petites pour être lues, vous pouvez cliquer dessus pour voir l'image en taille réelle.
De temps à autres des captures d'écran de DevC++ sont disponibles par le biais d'un lien.
Le programme présenté ici est le programme de multiplication de matrices carrées.
Une erreur a été volontairement introduite dans l'exemple en ligne:
La ligne 116
a été remplacée par la ligne
On place un point d'arrêt (breakpoint) juste avant le calcul du produit matriciel.
(version DevC++)
Dans la barre des messages en bas de la fenêtre de Code::Block vous disposez d'un onglet permettant de voir les messages du dévermineur.
On active le mode debuggage dans le projet. Pour cela, on doit modifier les options de construction (build options) du projet.
Une fois la fenêtre des build options ouvertes, assurez vous que la première case (activant l'option -g) est cochée.
(version DevC++)
Activation du mode de déverminage avec DevC++
Avant de lancer le déverminage du projet pour la première fois, il faut
On lance le déverminage avec la touche F8 ou en allant dans le menu debug.
Le programme démarre et la fenêtre d'exécution demande de rentrer la matrice A puis la matrice B.
On entre les valeurs voulues.
Le programme s'arrête au point d'arrêt placé précédemment.
Il faut utiliser les icônes suivants pour progresser dans le déverminage
Les icônes sont, dans l'ordre :
L'exécution d'un step over calcul le résultat de la multiplication et se place sur l'énoncé suivant.
Si on continue les exécutions pas-à-pas (à l'aide de step over) on voit s'afficher chaque matrice (les appels de fonction display_matrix) et finalement le résultat erroné.
Relançons le dévermineur jusqu'au point d'arrêt.
L'exécution d'un step into va permettre de suivre l'évolution du calcul au fur et à mesure.
L'exécution de
nous mène à l'intérieur de la fonction.
Pour suivre le comportement des boucles, il est pertinent de connaître la valeur des différentes variables de la fonction.
Un onglet du panneau de gestion, sur la gauche, permet de les connaître.
Si ce panneau n'est pas présent, vous pouvez l'obtenir dans le menu view.
C'est le même qui contient l'onglet de gestion des fichiers et des projets.
L'onglet watches (en français on utilisera « les veilles ») permet de connaître les paramètres de la fonction ainsi que les variables locales.
On remarque cependant que les valeurs des tableaux ne sont pas indiquées.
Ainsi, une fois rendu à ce stade du déverminage, on voit qu'il n'y a pas de moyen de connaître la valeur de matrix_AB[i][j].
Dans les paramètres de la fonction on retrouve bien matrix_AB mais ceci réfère au tableau complet et on ne peut obtenir les valeurs de chaque composante.
matrix_AB = (float (*)[3]) 0x22fee0 indique que
Cette adresse sera bien sûr différente pour vous.
En effectuant un clic droit sur le panneau, nous pouvons rajouter une veille.
Une fenêtre s'ouvre permettant de taper l'expression dont on veut surveiller la valeur.
(version DevC++)
Note : DevC++ n'affiche pas ni les variables locales ni les paramètres de la fonction par défaut.
Ceci, nous permet de voir la valeur de matrix_AB[i][j] à tout moment.
Attention, cette valeur dépend donc des valeurs i et j
Si vous voulez connaître les autres valeurs de matrix_AB, comme matrix_AB[1][1] par exemple, il faudra créer des veilles explicites.
Ainsi, on peut en étudiant pas-à-pas le calcul de matrix_AB[i][j] découvrir que l'erreur est située à cette ligne.
Voici la formule corrigée.