SI6 – TP3
Manipulation du débogueur de Visual C#
Comme tout EDI complet, Visual C# possède un débogueur, outil très utile pour un
programmeur pour la mise au point de ses programmes. Il va permettre, par exemple,
d’exécuter les instructions une par une, d’observer l’évolution du contenu des variables, de
revenir en arrière, bref de savoir exactement pourquoi telle partie de code ne fonctionne pas
comme prévu.
Remarque : les manipulations se feront avec un programme en mode console.
Pour l’utiliser, il faudra se placer en mode « debogage » : exécuter l’application en appuyant
sur F5 ou en passant par le menu Déboguer > Démarrer le débogage ou encore en cliquant sur
le petit triangle vert :
Télécharger le source C# au format texte qui permettra le test du débogueur, sur
Store/~/Si6/Tp3 et le copier dans un fichier .cs.
Mettre un point d’arrêt et avancer pas à pas (avant le lancement du debogage)
Pour que le programme s’arrête à un endroit précis et qu’il permette de voir ce qu’il se passe ;
il va falloir mettre des points d’arrêt dans le code. Il faut se placer sur la ligne, par exemple
sur la ligne 59 ([Link] …) et appuyer sur F9, ou bien cliquer dans la marge
complètement à gauche pour le même effet : un point rouge apparait et indique qu’il y a un
point d’arrêt à cet endroit :
SIO1 SI6 – Tp3 1
Il est possible de mettre autant de points d’arrêt que l’on souhaite, à n’importe quel endroit du
code.
Lancer l’application avec le débogage avec F5, Visual C# s’arrête sur la ligne prévue en la
surlignant en jaune :
On peut remarquer au niveau du carré rouge ci-dessous, que le débogueur est en pause et qu’il
est possible soit de continuer l’exécution (triangle vert) soit de l’arrêter (carré) soit de
redémarrer le programme depuis le début (carré avec une flèche blanche dedans) :
On peut désormais exécuter le code pas à pas : Pas à pas détaillé, Pas à pas principal et Pas à
pas sortant (sortir plus rapidement d'une procédure en cours de visualisation par exemple) :
Utiliser la touche F10 pour continuer l’exécution du code pas à pas. La ligne suivante se
trouve surlignée en jaune. F10 à nouveau et une saisie au clavier est demandée.
F10 suivant permet de pointer la ligne 61. F10 suivant pointe la ligne 62. On constate que la
méthode VitesseAutorisee(typeLieu) a été exécutée sans visualisation de son code, car le
mode de Pas à pas est principal. Il faut utiliser la touche F11 (Pas à pas détaillé) pour
« rentrer » dans le code de la méthode.
La ligne 62 étant pointée, la touche F11permet de pointer sur la méthode Accelerer( ) :
Continuer jusqu’à la fin le programme, avec les touches F10 et F11, à sa convenance.
Observer des variables
Relancer l’exécution du programme avec débogage F5. A ce moment-là, en passant la souris
sur la variable Garage, une mini-information (info-bulle ou DataTips) s’affiche et en tant que
SIO1 SI6 – Tp3 2
collection, il est possible de visualiser chaque élément de cette liste (ici le 2 ième élément de
rang 1) :
Le DataTip disparaît lorsque l’on retire le pointeur de la souris. Pour épingler un DataTip afin
qu'il reste ouvert, cliquer sur l'icône Épingler à la source ou cliquer avec le bouton droit sur
une variable, puis cliquez sur Épingler à la source. Le DataTip épinglé se ferme à la fin de la
session de débogage :
Pour détacher un DataTip épinglé et le rendre flottant, cliquer sur l'icône Détacher de la
source. L'icône d'épingle reprend sa position détachée. Le DataTip flotte à présent au-dessus
de toutes les fenêtres actives. Le DataTip flottant se ferme à la fin de la session de débogage.
Continuer l’exécution du programme avec la touche F10, pour arriver sur la ligne 62
([Link](10) ;) et pointer la variable v1 sur cette ligne en jaune. Il s’affiche un certain
nombre d’informations, notamment la propriété vitesse. Faire un tour de boucle while avec
F10 et pointer à nouveau cette ligne. Quelle constatation pour la vitesse ?
La petite loupe permet d’ouvrir une fenêtre afin de voir des informations
complémentaires dans le « Visualiseur de texte » :
SIO1 SI6 – Tp3 3
Il est possible de visualiser le contenu des variables locales dans la fenêtre en bas « Variables
locales ». Visualiser dans cette fenêtre le contenu de la variable locale typeLieu. Que
représente la valeur numérique (86 ici) ?
Revenir en arrière
Si pour une raison quelconque, il faut ré-exécuter un bout de code, il est possible de forcer le
débogueur à revenir en arrière dans le programme. Deux solutions possibles : soit de déplacer
avec la souris la petite flèche jaune sur la gauche vers la ligne de code désirée :
soit un click droit à l’endroit souhaité et choisir l’élément de menu : Définir l’instruction
suivante :
SIO1 SI6 – Tp3 4
Il faut tout de même faire attention à ce retour en arrière qui peut ne pas correspondre au
niveau des variables à une 1ère exécution (vis-à-vis de leur contenu) !
Que constate-t-on ?
La pile des appels
Une autre fenêtre importante à regarder est la fenêtre « Pile des appels ». Elle indique la
position actuelle et par où on est passé (par quelle procédure ou fonction) pour arriver à cet
endroit-là.
Appuyer sur F11 pour rentrer dans la méthode Accelerer( ). On peut voir dans la pile des
appels que cette méthode a été appelée depuis la méthode Main( ) :
Si on clique sur la ligne Main( ), le débogueur nous ramène automatiquement à l’endroit où a
été fait l’appel. Cette ligne est alors surlignée en vert pour bien faire la différence avec le
surlignage en jaune de la ligne en cours d’exécution :
SIO1 SI6 – Tp3 5
La pile des appels est également affichée lorsque l’on rencontre une erreur, afin de localiser
plus facilement l’origine du problème.
Utilisation de fenêtre espion
Une autre méthode pour visualiser une variable, est d'utiliser une fenêtre espion (4 fenêtres
espions disponibles appelées à l'aide de combinaison de touches, Ctrl+D+W pour activer la
1ère fenêtre)
Une fois activée une fenêtre, en mode débogage, faire glisser, avec la souris, une ou plusieurs
variables depuis le programme, dans cette fenêtre et constater l'évolution du contenu de
celles-ci en cours d'exécution :
Combien y a t-il d'espion ?
SIO1 SI6 – Tp3 6