Formation Débogueur 1. À quoi ça sert?... 2 2. Comment l utiliser?... 2 3. Mise en application... 2 3.1. Mettre un point d arrêt et avancer pas à pas... 3 3.2. Observer des variables... 4 3.3. Revenir en arrière... 6 3.4. La pile des appels... 7 3.5. Conclusion... 8 4. Amusons-Nous... 9 Page 1 / 9
1. À quoi ça sert? C est un outil permettant d obtenir divers informations sur le déroulement de son programme. Il permet d'exécuter des instructions les unes après les autres, de pouvoir observer le contenu des variables, de revenir en arrière Il permet ainsi de savoir exactement ce qu il se passe et surtout de repérer les disfonctionnement de son programme. Pour l utiliser, il faut que Visual Studio soit en mode «débogage».comment faire? C est simple, il suffit d 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 dont l icône rappelle un bouton de lecture. 2. Comment l utiliser? Pour l utiliser, il faut que Visual C# express soit en mode «débogage». Pour ce faire, il faut exécuter l application en appuyant sur F5 ou en passant par le menu Déboguer > Démarrer le débogage ou en cliquant sur le petit triangle vert dont l icône rappelle un bouton de lecture. 3. Mise en application Pour utiliser le débogueur de Visual Studio, nous allons utiliser le code suivant : static void Main(string[] args) Console.WriteLine(CalculSommeIntersection()); static int CalculSommeIntersection() List<int> multiplesde3 = new List<int>(); List<int> multiplesde5 = new List<int>(); for (int i = 1; i <= 100; i++) if (i % 3 == 0) multiplesde3.add(i); if (i % 5 == 0) multiplesde5.add(i); int somme = 0; foreach (int m3 in multiplesde3) foreach (int m5 in multiplesde5) if (m3 == m5) somme += m3; return somme; Page 2 / 9
3.1. Mettre un point d arrêt et avancer pas à pas Pour que le programme s arrête sur un endroit précis et qu il nous permette de voir ce qu il se passe, il va falloir mettre des points d arrêts dans notre code. Pour mettre un point d arrêt, il faut se positionner sur la ligne où nous souhaitons nous arrêter, par exemple la première ligne où nous appelons Console.WriteLine et appuyer sur F9. Nous pouvons également cliquer dans la marge à gauche pour produire le même résultat. Un point rouge s affiche et indique qu il y a un point d arrêt à cet endroit. On peut insérer autant de points d'arrêts et en les plaçant ou on le souhaite. Lançons l application avec F5, on s apercevra que Visual Studio s arrête sur la ligne prévue en la surlignant en jaune : Page 3 / 9
On remarque au niveau du carré rouge que le débogueur est en pause et qu il est possible de continuer l exécution (triangle vert) ou de l arrêter (carré bleu) ou de redémarrer le programme (carré avec point dedans). Nous pouvons désormais exécuter notre code pas à pas, en utilisant les icônes à coté ou les raccourcis claviers afficher dans l image ci-dessous : Utilisons la touche F10 pour continuer l exécution du code pas à pas. On s aperçoit que la ligne suivante se trouve également surlignée (à son tour). Continuons de presser la touche F10 pour se diriger vers l instruction suivante. Il n y en a plus le programme se termine. Avec F10 nous ne sommes passé que dans la méthode CalculSommeIntersection(). Pour rentrer dans la méthode, il aurait fallu utiliser la touche F11 qui est le pas à pas détaillé. Si nous souhaitons que le programme se poursuive pour aller au point d arrêt, il suffit d appuyer sur F5. Relançons notre programme mais cette fois-ci, lorsque le débogueur s arrête sur notre point d arrêt, nous appuierons sur F11 afin de rentrer dans la méthode CalculSommeIntersection(). Si on continue d appuyer sur F10, nous entrerons dans la boucle for. Rentrons dedans! 3.2. Observer des variables À ce moment-là du débogage, si on passe le curseur de la souris sur la variable i (l indice) Visual Studio va nous afficher une information : Page 4 / 9
Ce dernier nous indique que i vaut 1. Si nous continuons le parcours en appuyant sur F10 plusieurs fois, nous voyons que la valeur de i augmente, conformément à ce qui est attendu. Mettons un point d arrêt - F9 - sur la ligne : multiplesde3.add(i); Poursuivons notre exécution en appuyant sur F5. Le programme s arrête au moment où i vaut 3. Appuyons sur F10 pour exécuter l ajout de i à la liste et passons la souris sur la liste : Visual Studio nous indique alors que la liste multiplesde3 a un «Count» ayant pour valeur 1. Déroulons la liste : On s aperçoit que 3 a été ajouté dans le premier emplacement de la liste. Si nous continuons l exécution, on voit que les listes se remplissent au fur et à mesure. Enlevons le point d arrêt sur la ligne en appuyant à nouveau sur F9 et mettons un nouveau point d arrêt sur la ligne : int somme = 0; Poursuivons notre exécution avec F5, la boucle se terminé et nous pouvons voir que les listes sont complètement remplies : Page 5 / 9
Grâce au débogueur, nous pouvons voir vraiment tout ce qui nous intéresse, c est un des principaux atouts du débogueur qui est utile pour comprendre ce qu il se passe dans son programme. Il nous est également possible de voir les variables locales en regardant en bas dans la fenêtre «Variables locales». On peut observer les variables qui sont dans la portée courante. Il nous également mit à disposition une fenêtre «Espion» qui permet de surveiller une ou plusieurs variables. 3.3. Revenir en arrière Si pour une quelconque raison, nous souhaitons ré-exécuter une partie de notre programme (oubli d une information fournit par le débogueur ou autre), nous pouvons revenir en arrière dans le programme grâce au débogueur. Pour cela, nous avons deux solutions, soit nous effectuons un clic droit à l endroit souhaité et nous choisissons l élément de menu Définir l instruction suivante : Page 6 / 9
Soit on se déplace avec la souris la petite flèche jaune sur la gauche qui nous indique l emplacement ou nous nous trouvons. Cependant, on ne peut le qualifier de «Retour en arrière» car si (par exemple) nous souhaitons revenir en début de boucle (qui calcule les multiples) et que nous continuons l exécution, la liste continuera à se remplir. Cela se traduira de la manière suivante : au lieu qu on possède 33 éléments, la liste des multiples de 3 en contiendra 66 car nous n'aurons vidé à aucun moment la liste. Il serait alors plus judicieux de revenir en début de méthode afin de créer de nouveau la liste. 3.4. La pile des appels Fenêtre importante à regarder, la pile des appels. Elle permet d indiquer l endroit où l on se trouve mais également par où nous sommes passés pour arriver à la ligne du code où nous nous arrêtons. Exemple : Si on appuie sur F11 et qu on rentre dans la méthode CalculSommeIntersection() on apercevra dans la pile des appels qu on se trouve dans cette méthode CalculSommeIntersection() qui a été appelée depuis la méthode Main() : Page 7 / 9
Si l on clique maintenant sur la ligne du Main(), Visual Studio nous ramène à l endroit où l on a effectué l appel. Cette ligne sera alors surlignée en vert pour bien faire la différence avec le soulignage en jaune qui précise l emplacement du débogueur. 3.5. Conclusion Le débogueur est un outil très puissant permettant d'inspecter le contenu des variables lors de l'exécution d'un programme. On peut s'arrêter à un endroit de notre application grâce à un point d'arrêt. Le débogueur permet d'exécuter son application pas à pas et de suivre son évolution. Page 8 / 9
4. Amusons-nous Quel est le raccourci permettant de rentrer en débogue dans une méthode? F5 F9 F10 F11 Que permet le débogueur? Exécuter son application pas à pas et de suivre son évolution. Inspecter le contenu des variables lors de l'exécution d'un programme. Rentrer dans une méthode. Repérer les disfonctionnement de son programme Quand Visual Studio nous ramène à l endroit où l on a effectué l appel, de quelle couleur le code est-il surligné? Rouge Jaune Vert À quoi servent les points d arrêts? Pour se positionner sur la ligne que l on souhaite Pour que le programme s arrête sur une ligne précise Pour utiliser le pas à pas détaillé Page 9 / 9