Placer un point d'arrêt
La première chose à faire est de définir un point jusqu'au quel le programme devra s'exécuter. Le mieux dans notre cas serait d'exécuter le programme jusqu'au début de la fonction
division().
Pour placer un point d'arrêt (
breakpoint), c'est très simple. Il suffit de cliquer sur la bande grise à côté du code à l'endroit où l'on souhaite le placer. Un rond rouge devrait apparaître.
On peut placer autant de points d'arrêts que l'on veut.
Vous pouvez connaître la liste de tous les points d'arrêts de votre code source en affichant la liste des points d'arrêts. Elle se trouve dans le menu
Debug ->
Debugging windows ->
Breakpoints.
On peut alors exécuter à nouveau le programme en cliquant sur "
Debug/Continue" (F8). Le programme s'exécute alors jusqu'à la ligne où se situe le point rouge puis il attend.
On aurait également pu placer le curseur à cette ligne et cliquer sur "Run to cursor" (F4). Le résultat aurait été le même.
Vous pouvez en tout temps connaître le point où se situe l'ordinateur en cherchant la petite flèche jaune dans la bande grise. Comme on l'a vu précédemment.
Avancer d'un pas
On peut ensuite avancer d'un pas en appuyant sur "Next line" (F7) ou "Next instruction" si vous avez plusieurs instructions sur la même ligne.
Vous devriez voir la petite flèche jaune avancer dans le code source et le programme s'exécuter.
Il n'y a aucun moyen de reculer, vous ne pouvez qu'avancer dans le code source.
Si vous allez assez loin, vous allez arriver à la ligne 21 et... ne pas faire planter le programme.

Et c'est normal ! Souvenez-vous que le plantage survenait lorsque
a=0 et
b=2, ce qui n'est pas le cas ici. Il faudrait pouvoir connaître "
en live" la valeur des différentes variables et arguments. Et ça tombe bien, le débugueur sait faire ça.
Afficher la valeur des variables
On peut connaître la valeur de toutes les variables présentes dans une portée en ouvrant la fenêtre "
Watches". Elle se trouve dans le menu
Debug->
Debugging windows->
Watches.
Si vous vous situez au point d'arrêt, la fenêtre devrait afficher ceci :
Vous avez en premier les deux variables déclarées dans la fonction avec leurs valeurs à ce moment-là et ensuite la valeur des arguments que la fonction a reçus. Les valeurs de
c et
d sont "bizarres" parce qu'à ce moment-là du code, elles n'ont pas encore été initialisées.
Si vous avancez dans le programme, toujours avec F7, vous verrez les valeurs des deux variables changer. La dernière modification s'affiche en plus en rouge de sorte que l'on puisse bien suivre ce qui se passe.
Cette fois, les variables ont pris des valeurs plus cohérentes.
Il ne nous reste plus qu'à avancer dans le programme jusqu'à ce qu'on arrive dans la situation où
a=0 et
b=2. Pour ce faire, vous pouvez avancer à coup de F7 jusqu'à arriver au plantage ou enlever le point d'arrêt et utiliser F8. La deuxième méthode est plus rapide puisqu'elle nous fait aller directement au point du problème. Mais il arrive parfois qu'il faille y aller pas-à-pas pour bien voir tout ce qui se passe.
Arrivé au stade du plantage, vous devriez pouvoir trouver la faute vous-même. La fenêtre "
Watches" devrait indiquer
c=0. Et donc le calcul de
d va nécessiter une division par zéro.
Cela veut dire que la valeur
b=2 pose problème dans cette fonction. A vous de changer le code source en conséquence. C'est de toute façon un exemple bidon.
Si vous modifiez le code source, vous devez recompiler le programme pour pouvoir débuguer à nouveau.
Notre objectif est donc atteint, nous avons pu repérer la ligne qui cause un crash du programme, trouver les causes de ce plantage en observant la valeur des variables et finalement corriger cette erreur.