Tutoriel : Apprendre à déboguer le code C# avec Visual Studio

Cet article présente les fonctionnalités du débogueur Visual Studio dans une procédure pas à pas. Pour un tour d’horizon plus général des fonctionnalités du débogueur, voir Présentation du débogueur. Lorsque vous déboguez votre application, cela signifie généralement que vous exécutez votre application avec le débogueur attaché. Lorsque vous effectuez cette tâche, le débogueur fournit de nombreuses façons de voir ce que fait votre code pendant qu’il s’exécute. Vous pouvez parcourir votre code pas à pas et examiner les valeurs stockées dans les variables, vous pouvez définir des espions sur des variables pour voir quand les valeurs changent, vous pouvez examiner le chemin d’exécution de votre code, voir si une branche de code s’exécute, etc. Si, avec cet exercice, c’est la première fois que vous essayez de déboguer du code, vous pouvez lire Débogage pour grands débutants avant de poursuivre cet article.

Bien que l’application de démonstration soit en C#, la plupart des fonctionnalités s’appliquent à C++, Visual Basic, F#, Python, JavaScript et les autres langages pris en charge par Visual Studio (F# ne prend pas en charge Edit-and-continue). F# et JavaScript ne prennent pas en charge la fenêtre Automatique). Les captures d’écran sont en C#.

Ce didacticiel présente les procédures suivantes :

  • Démarrer le débogueur et atteindre des points d’arrêt
  • Découvrir les commandes permettant de parcourir le code pas à pas dans le débogueur
  • Inspecter des variables dans des bulles d’informations et dans les fenêtres du débogueur
  • Examiner la pile des appels

Prérequis

Visual Studio 2022 et la charge de travail Développement .NET Desktop doivent être installés.

Visual Studio 2019 et la charge de travail Développement multiplateforme .NET Core doivent être installés.

Si vous n’avez pas encore installé Visual Studio, accédez à la page Téléchargements Visual Studio pour l’installer gratuitement.

Si vous devez installer la charge de travail, mais que vous avez déjà installé Visual Studio, cliquez sur Outils>Obtenir les outils et fonctionnalités..., qui ouvre Visual Studio Installer. Visual Studio Installer est lancé. Choisissez la charge de travail Développement multiplateforme .NET Core, puis choisissez Modifier.

Si vous disposez déjà de Visual Studio, mais que la charge de travail Développement .NET Desktop n’est pas installée, accédez à Outils>Obtenir des outils et des fonctionnalités..., ce qui lance Visual Studio Installer. Dans Visual Studio Installer, choisissez la charge de travail Développement .NET Desktop, puis Modifier.

Créer un projet

Tout d’abord, vous créez un projet d’application console .NET Core. Le type de projet inclut tous les fichiers de modèle dont vous avez besoin au départ.

  1. Ouvrez Visual Studio. Si la fenêtre de démarrage n’est pas ouverte, sélectionnez Fichier>Fenêtre Démarrer.

  2. Dans la fenêtre de démarrage, sélectionnez Créer un projet.

  1. Dans la fenêtre Créer un projet, entrez console dans la zone de recherche. Ensuite, choisissez C# Dans la liste des langages, puis choisissez Windows dans la liste des plateformes.

    Après avoir appliqué les filtres de langage et de plateforme, choisissez le modèle Application console pour .NET Core, puis sélectionnezSuivant.

    Screenshot of the C# template for the Console App.

    Remarque

    Si vous ne voyez pas le modèle Application console, vous pouvez l’installer à partir de la fenêtre Créer un projet. Dans le Vous ne trouvez pas ce que vous cherchez ?, choisissez le lien Installer plus d’outils et de fonctionnalités. Ensuite, dans Visual Studio Installer, choisissez la charge de travail Développement multiplateforme .NET Core.

  2. Dans la fenêtre Configurer votre nouveau projet, entrez GetStartedDebugging dans la zone Nom du projet. Sélectionnez ensuite Suivant.

  3. Sélectionnez le framework cible recommandé (.NET 8.0 ou prise en charge à long terme), puis sélectionnez Créer.

  1. Dans la fenêtre Créer un projet, entrez console dans la zone de recherche. Ensuite, choisissez C# Dans la liste des langages, puis choisissez Windows dans la liste des plateformes.

    Une fois que vous avez appliqué les filtres de langage et de plateforme, choisissez le modèle Application console, puis sélectionnez Suivant.

    Screenshot of the 'Console Application' template in the 'Create a new project' window of Visual Studio 2022.

    Remarque

    Si vous ne voyez pas le modèle Application console, vous pouvez l’installer à partir de la fenêtre Créer un projet. Dans le Vous ne trouvez pas ce que vous cherchez ?, choisissez le lien Installer plus d’outils et de fonctionnalités. Dans le Visual Studio Installer, choisissez ensuite la charge de travail Développement de bureau .NET.

  2. Dans la fenêtre Configurer votre nouveau projet, entrez GetStartedDebugging dans la zone Nom du projet. Sélectionnez ensuite Suivant.

  3. Dans la fenêtre Informations supplémentaires, vérifiez que .NET 8.0 est sélectionné dans le menu déroulant Framework, puis sélectionnez Créer.

Visual Studio ouvre votre nouveau projet.

Création de l'application

Dans Program.cs, remplacez tout le code par défaut par le code suivant :

using System;

class ArrayExample
{
   static void Main()
   {
      char[] letters = { 'f', 'r', 'e', 'd', ' ', 's', 'm', 'i', 't', 'h'};
      string name = "";
      int[] a = new int[10];
      for (int i = 0; i < letters.Length; i++)
      {
         name += letters[i];
         a[i] = i + 1;
         SendMessage(name, a[i]);
      }
      Console.ReadKey();
   }

   static void SendMessage(string name, int msg)
   {
      Console.WriteLine("Hello, " + name + "! Count to " + msg);
   }
}

Démarrez le débogueur !

  1. Appuyez sur F5 (Débogage > Démarrer le débogage) ou sur le bouton Démarrer le débogageImage of the Start Debugging button. dans la barre d’outils de débogage.

    F5 démarre l’application avec le débogueur attaché au processus de l’application, mais jusqu’à présent, nous n’avons rien fait de spécial pour examiner le code. Ainsi, l’application se charge simplement et vous voyez cette sortie de console.

    Hello, f! Count to 1
    Hello, fr! Count to 2
    Hello, fre! Count to 3
    Hello, fred! Count to 4
    Hello, fred ! Count to 5
    Hello, fred s! Count to 6
    Hello, fred sm! Count to 7
    Hello, fred smi! Count to 8
    Hello, fred smit! Count to 9
    Hello, fred smith! Count to 10
    

    Dans ce tutoriel, vous examinez cette application plus en détail à l’aide du débogueur et découvrez ses fonctionnalités.

  2. Arrêtez le débogueur en appuyant sur le bouton d’arrêt rouge (Maj + F5). Image of the Stop Debugging button.

  3. Dans la fenêtre de console, appuyez sur une touche pour fermer la fenêtre de console.

La plupart du temps, nous utilisons des raccourcis clavier ici, car il s’agit d’un moyen rapide d’exécuter des commandes du débogueur. Des commandes équivalentes, telles que des commandes de la barre d’outils ou de menu, sont également indiquées.

  1. Pour démarrer le débogueur, sélectionnez F5 ou choisissez le bouton Cible de débogage dans la barre d’outils Standard, ou choisissez le bouton Démarrer le débogage dans la barre d’outils Déboguer, ou choisissez Déboguer>Démarrer le débogage dans la barre de menus.

    Screenshot of the Debug Target button in the Standard toolbar of Visual Studio 2022.

    F5 démarre l’application avec le débogueur attaché au processus d’application. Étant donné que nous n’avons rien fait de spécial pour examiner le code, l’application s’exécute jusqu’à l’achèvement et vous voyez la sortie de la console.

    Hello, f! Count to 1
    Hello, fr! Count to 2
    Hello, fre! Count to 3
    Hello, fred! Count to 4
    Hello, fred ! Count to 5
    Hello, fred s! Count to 6
    Hello, fred sm! Count to 7
    Hello, fred smi! Count to 8
    Hello, fred smit! Count to 9
    Hello, fred smith! Count to 10
    
  2. Pour arrêter le débogueur, sélectionnez Maj+F5, ou choisissez le bouton Arrêter le débogage dans la barre d’outils Déboguer, ou choisissez Déboguer>Arrêter le débogage dans la barre de menus.

    Screenshot of the Stop debugging button in the Debug toolbar of Visual Studio 2022.

  3. Dans la fenêtre de console, sélectionnez une touche pour fermer la fenêtre de console.

Définir un point d’arrêt et démarrer le débogueur

  1. Dans la boucle for de la fonction Main, définissez un point d’arrêt en cliquant dans la marge gauche de la ligne de code suivante :

    name += letters[i];

    Un cercle rouge Image of a breakpoint. apparaît à l’endroit où vous avez défini le point d’arrêt.

    Les points d’arrêt sont l’une des fonctionnalités les plus élémentaires et les plus essentielles pour un débogage fiable. Quand vous définissez un point d'arrêt, Visual Studio interrompt l'exécution du code à l'emplacement du point d'arrêt pour vous permettre d'examiner les valeurs des variables, le comportement de la mémoire ou encore la bonne exécution ou non d'une branche de code.

  2. Appuyez sur F5 ou sur le boutonDémarrer le débogage. Screenshot of the Start Debugging button. L’application démarre et le débogueur s’exécute jusqu’à la ligne de code où vous avez défini le point d’arrêt.

    Set and hit a breakpoint

    La flèche jaune représente l’instruction sur laquelle le débogueur s’est interrompu, ce qui interrompt également l’exécution de l’application au même point (cette instruction ne s’est pas encore exécutée).

    Si l’application n’est pas déjà en cours d’exécution, F5 démarre le débogueur et s’arrête au premier point d’arrêt. Sinon, F5 continue l’exécution de l’application jusqu’au point d’arrêt suivant.

    Les points d’arrêt sont une fonctionnalité pratique quand vous savez quelle ligne de code ou section de code vous voulez examiner en détail. Pour plus d’informations sur les différents types de point d’arrêt que vous pouvez définir, par exemple les points d’arrêt conditionnels, consultez Utilisation des points d’arrêt.

  1. Dans la boucle for de la fonction Main, définissez un point d’arrêt en cliquant dans la marge gauche de la ligne de code suivante :

    name += letters[i];

    Un cercle rouge apparaît là où vous avez défini le point d’arrêt.

    Screenshot of a breakpoint in Visual Studio 2022.

    Les points d’arrêt constituent une fonctionnalité essentielle pour un débogage fiable. Vous pouvez définir des points d’arrêt là où vous voulez que Visual Studio interrompe l’exécution de votre code afin d’examiner les valeurs des variables ou le comportement de la mémoire ou encore la bonne exécution ou non d’une branche de code.

  2. Pour commencer le débogage, sélectionnez F5 ou choisissez le bouton Cible de débogage dans la barre d’outils Standard, ou choisissez le bouton Démarrer le débogage dans la barre d’outils Déboguer, ou choisissez Déboguer>Démarrer le débogage dans la barre de menus. L’application démarre et le débogueur s’exécute jusqu’à la ligne de code où vous avez défini le point d’arrêt.

    Screenshot showing a breakpoint in the code editor of Visual Studio 2022, with code execution paused at the breakpoint.

    La flèche jaune pointe vers l’instruction sur laquelle le débogueur s’est arrêté. L’exécution de l’application est suspendue au même point, l’instruction n’étant pas encore exécutée.

    Lorsque l’application n’est pas en cours d’exécution, F5 démarre le débogueur, qui s’exécute jusqu’à ce qu’il atteigne le premier point d’arrêt. Si l’application est suspendue à un point d’arrêt, F5 continue d’exécuter l’application jusqu’à ce qu’elle atteigne le point d’arrêt suivant.

    Les points d’arrêt sont une fonctionnalité pratique quand vous savez quelle ligne ou section de code vous voulez examiner en détail. Pour plus d’informations sur les différents types de points d’arrêt que vous pouvez définir, tels que les points d’arrêt conditionnels, consultez Utilisation des points d’arrêt.

Nous utilisons ici principalement des raccourcis clavier, car c’est un bon moyen d’exécuter rapidement votre application dans le débogueur (les commandes équivalentes, comme les commandes des menus, sont indiquées entre parenthèses).

  1. L’exécution du code étant interrompue sur l’instruction name += letters[i], pointez sur la variable letters pour voir sa valeur par défaut, la valeur du premier élément du tableau, char[10].

    Les fonctionnalités qui vous permettent d’inspecter des variables sont parmi les plus pratiques du débogueur : vous pouvez faire cela de différentes façons. Souvent, lorsque vous essayez de déboguer un problème, vous tentez de déterminer si les variables stockent bien les valeurs prévues à un moment donné.

  2. Développez la variable letters pour afficher ses propriétés, qui incluent tous les éléments qu’elle contient.

    Screenshot of the debugger paused at the 'name+= letters[I]' statement.

  3. Ensuite, pointez sur la variable name pour voir sa valeur actuelle, une chaîne vide.

  4. Appuyez deux fois sur F10 (ou choisissez Déboguer > Pas à pas principal) pour avancer jusqu’à l’appel de la méthode SendMessage, puis appuyez sur F10 encore une fois.

    F10 fait avancer le débogueur jusqu’à l’instruction suivante sans effectuer de pas à pas détaillé dans les fonctions ou les méthodes du code de votre application (le code s’exécute néanmoins). En appuyant sur F10 sur l’appel de méthode SendMessage, nous avons ignoré le code d’implémentation de SendMessage (qui potentiellement ne nous intéresse pas pour l’instant).

  5. Appuyez plusieurs fois sur F10 (ou Déboguer>Pas à pas principal) pour itérer plusieurs fois dans la boucle for, en vous arrêtant à nouveau au point d’arrêt et en pointant sur la variable name à chaque fois pour vérifier sa valeur.

    An animated screenshot of the Visual Studio Debugger showing the effect of pressing F10 to

    La valeur de la variable change à chaque itération de la boucle for, en affichant les valeurs de f, puis fr, puis fre, et ainsi de suite. Pour faire avancer le débogueur dans la boucle plus rapidement dans ce scénario, vous pouvez appuyer sur F5 (ou choisir Déboguer>Continuer), ce qui vous permet d’atteindre le point d’arrêt au lieu de l’instruction suivante.

    Souvent, lors du débogage, vous voulez un moyen rapide de vérifier les valeurs des propriétés sur des variables pour voir si elles stockent bien les valeurs prévues. Les bulles d’informations sont un bon moyen de faire cela.

  6. L’exécution du code restant interrompue dans la boucle for de la méthode Main, appuyez sur F11 (ou choisissez Déboguer > Effectuer un pas à pas détaillé) jusqu’à ce que vous vous arrêtiez à l’appel de méthode SendMessage.

    Vous devez vous trouver sur cette ligne de code :

    SendMessage(name, a[i]);

  7. Appuyez une fois de plus sur F11 pour entrer dans la méthode SendMessage.

    Le pointeur jaune avance dans la méthode SendMessage.

    Screenshot of the execution pointer at the SendMessage method.

    F11 est la commande Pas à pas détaillé : elle fait avancer l’exécution de l’application une instruction à la fois. F11 est un bon moyen pour examiner le flux d’exécution de la façon la plus détaillée possible. Par défaut, le débogueur ignore le code non-utilisateur (si vous souhaitez plus de détails, consultez Uniquement mon code).

    Supposons que vous ayez fini d’examiner la méthode SendMessage, et que vous souhaitiez sortir de la méthode mais rester dans le débogueur. Vous pouvez faire cela avec la commande Pas à pas sortant.

  8. Appuyez sur Maj + F11 (ou Débogage > Pas à pas sortant).

    Cette commande reprend l’exécution de l’application (et fait avancer le débogueur) jusqu’à ce que la méthode ou la fonction active soit retournée.

    Vous devez être de retour dans la boucle for dans la méthode Main, suspendue à l’appel de méthode SendMessage. Pour plus d’informations sur les différentes façons de parcourir votre code, consultez Naviguer dans le code dans le débogueur.

  1. L’exécution du code étant interrompue sur l’instruction name += letters[i], pointez sur la variable letters pour afficher une bulle d’informations montrant la taille du tableau et le type d’élément, char[10].

    Remarque

    L’une des fonctionnalités les plus utiles du débogueur est sa capacité à inspecter une variable. Souvent, quand vous essayez de déboguer un problème, vous essayez de déterminer si les variables ont les valeurs que vous attendez à un moment donné. L’affichage des conseils sur les données est un bon moyen de vérifier cela.

  2. Développez la variable letters pour afficher tous ses éléments de tableau et leurs valeurs.

    Screenshot of a debugger data tip in Visual Studio 2022 that shows the element values for the 'letters' array variable.

  3. Pointez sur la variable name pour afficher sa valeur actuelle, qui est une chaîne vide.

  4. Pour faire avancer le débogueur jusqu’à l’instruction suivante, sélectionnez F10, ou cliquez sur le bouton Pas à pas principal dans la barre d’outils Déboguer, ou choisissez Déboguer>Pas à pas principal dans la barre de menus. Sélectionnez F10 deux fois de plus pour passer l’appel de méthode SendMessage.

    F10 fait avancer le débogueur sans effectuer de pas à pas détaillé dans les fonctions ou les méthodes, mais leur code s’exécute néanmoins. De cette façon, nous avons ignoré le débogage du code dans la méthode SendMessage, qui ne nous intéresse pas pour l’instant.

  5. Pour itérer dans la boucle for plusieurs fois, sélectionnez F10 à plusieurs reprises. Pendant chaque itération de boucle, effectuez une pause au point d’arrêt, puis pointez sur la variable name pour vérifier sa valeur dans l’info-bulle de données.

    Screenshot of a debugger data tip in Visual Studio 2022 that shows the string value for the 'name' variable.

    La valeur de la variable change à chaque itération de la boucle for, en affichant les valeurs de f, puis fr, puis fre, et ainsi de suite. Pour faire avancer le débogueur dans la boucle plus rapidement, sélectionnez plutôt F5, qui progresse jusqu’à votre point d’arrêt au lieu de l’instruction suivante.

  6. L’exécution du code étant interrompue dans la boucle for de la méthode Main, sélectionnez F11, ou choisissez le bouton Effectuer un pas à pas détaillé dans la barre d’outils Déboguer, ou choisissez Déboguer>Effectuer un pas à pas détaillé dans la barre de menu, jusqu’à ce que vous atteigniez l’appel de méthode SendMessage.

    Le débogueur doit être suspendu à cette ligne de code :

    SendMessage(name, a[i]);

  7. Pour effectuer un pas à pas détaillé dans la méthode SendMessage, sélectionnez de nouveau F11.

    Le pointeur jaune avance dans la méthode SendMessage.

    Screenshot showing the execution pointer of the debugger within the 'SendMessage' method.

    F11 vous aide à examiner plus en détail le flux d’exécution de votre code. Pour effectuer un pas à pas détaillé dans une méthode à partir d’un appel de méthode, sélectionnez F11. Par défaut, le débogueur ignore le pas à pas détaillé dans les méthodes non-utilisateur. Pour en savoir plus sur le débogage du code non-utilisateur, consultez Uniquement mon code.

    Une fois que vous avez terminé le débogage de la méthode SendMessage, vous êtes prêt à revenir à la boucle for de la méthode main.

  8. Pour quitter la méthode SendMessage, sélectionnez Maj+F11, ou cliquez sur le bouton Pas à pas sortant dans la barre d’outils Déboguer, ou choisissez Déboguer>Pas à pas sortant dans la barre de menus.

    La commande Pas à pas sortant reprend l’exécution de l’application et fait avancer le débogueur jusqu’au retour de la méthode ou fonction active.

    Vous voyez le pointeur jaune de retour dans la boucle for de la méthode Main, interrompue à l’appel de méthode SendMessage. Pour plus d’informations sur les différentes façons de vous déplacer dans votre code, consultez Parcourir le code dans le débogueur.

  1. Sélectionnez F5 pour passer à nouveau au point d’arrêt.

  2. Dans l’éditeur de code, faites défiler vers le bas, puis pointez sur la méthode Console.WriteLine dans la méthode SendMessage jusqu’à ce que le bouton vert Exécuter jusqu’au clicImage of the Run to Click button.apparaisse. L’info-bulle du bouton indique « Lancer l’exécution jusqu’ici. »

    Screenshot of the Run to Click button.

    Remarque

    Le bouton Exécuter jusqu’au clic est une nouveauté de Visual Studio 2017. (Si vous ne voyez pas le bouton avec la flèche verte, utilisez à la place F11 dans cet exemple pour faire avancer le débogueur jusqu’au bon endroit.)

  3. Sélectionnez le bouton Exécuter jusqu’au clic. Image of the Run to Click button.

    Le débogueur avance jusqu’à la méthode Console.WriteLine.

    L’utilisation de ce bouton revient à définir un point d’arrêt temporaire. Exécuter jusqu’au clic est pratique pour vous déplacer rapidement dans une zone visible du code d’application (que vous pouvez sélectionner dans n’importe quel fichier ouvert).

  1. Sélectionnez F5 pour passer à nouveau au point d’arrêt.

  2. Dans l’éditeur de code, pointez sur l’appel de méthode Console.WriteLine dans la méthode SendMessage jusqu’à ce que le bouton Exécuter jusqu’au clic apparaisse. L’info-bulle du bouton indique « Lancer l’exécution jusqu’ici. »

    Screenshot showing the Run to Click button in Visual Studio 2022.

  3. Sélectionnez le bouton Exécuter jusqu’au clic. Sinon, avec votre curseur au niveau de l’instruction Console.WriteLine, sélectionnez Ctrl+F10. Vous pouvez également cliquer avec le bouton droit sur l’appel de méthode Console.WriteLine, puis choisir Exécuter jusqu’au curseur dans le menu contextuel.

    Le débogueur avance jusqu’à l’appel de méthode Console.WriteLine.

    L’utilisation du bouton Exécuter jusqu’au clic est similaire à la définition d’un point d’arrêt temporaire. Cela permet de se déplacer rapidement dans une zone visible du code de votre application dans un fichier ouvert.

Redémarrer rapidement votre application

Sélectionnez le bouton RedémarrerImage of the Restart App button.dans la barre d’outils Déboguer (Ctrl + Maj + F5).

Quand vous appuyez sur Redémarrer, vous gagnez du temps par rapport à l’action consistant à arrêter l’application, puis à redémarrer le débogueur. Le débogueur se met en pause sur le premier point d’arrêt qui est atteint par l’exécution du code.

Le débogueur s’arrête à nouveau au point d’arrêt que vous avez défini précédemment dans la boucle for.

Pour réexécuter votre application depuis le début dans le débogueur, sélectionnez Ctrl+Maj+F5, ou choisissez le bouton Redémarrer dans la barre d’outils Déboguer, ou choisissez Déboguer>Redémarrer dans la barre de menus.

Screenshot of the Restart button in the Debug toolbar of Visual Studio 2022.

La commande Redémarrer arrête le débogueur, puis le redémarre en une seule étape. Lorsque le débogueur redémarre, il s’exécute jusqu’au premier point d’arrêt, qui est le point d’arrêt que vous avez précédemment défini dans la boucle for, puis s’interrompt.

Inspecter des variables avec les Fenêtres Automatique et Variables locales

  1. Examinez la fenêtre Automatique en bas de l’éditeur de code.

    Si elle est fermée, ouvrez-la interrompue dans le débogueur en choisissant Déboguer>Windows>Autos.

    Dans la fenêtre Automatique, vous voyez des variables et leur valeur actuelle. La fenêtre Automatique montre toutes les variables utilisées dans la ligne active ou la ligne précédente (consultez la documentation pour les comportements selon le langage).

  2. Ensuite, examinons la fenêtre Variables locales, sous un onglet à côté de la fenêtre Automatique.

  3. Développez la variable letters pour afficher les éléments qu’elle contient.

    Screenshot of the Locals Window in Visual Studio.

    La fenêtre Variables locales montre les variables qui se trouvent dans l’étendue actuelle, c’est-à-dire le contexte d’exécution actif.

Les fenêtres Autos et Locals affichent les valeurs des variables lorsque vous déboguez. Les fenêtres ne sont disponibles que pendant une session de débogage. La fenêtre Autos affiche les variables utilisées sur la ligne active à laquelle se trouve le débogueur et sur la ligne précédente. La fenêtre Locals affiche les variables définies dans l’étendue locale, qui est généralement la fonction ou la méthode actuelle.

  1. Pendant que le débogueur est suspendu, consultez la fenêtre Autos en bas de l’éditeur de code.

    Si la fenêtre Autos est fermée, sélectionnez Ctrl+D, A ou choisissez Déboguer>Fenêtres>Autos dans la barre de menus.

  2. Pendant que le débogueur est toujours suspendu, consultez la fenêtre Locals, dans un onglet à côté de la fenêtre Autos.

    Si la fenêtre Locals est fermée, sélectionnez Ctrl+D, L ou choisissez Déboguer>Fenêtres>Locals.

  3. Dans la fenêtre Locals, développez la variable letters pour voir ses éléments de tableau et leurs valeurs.

    Screenshot of the Locals window in Visual Studio 2022, with the 'letters' array variable expanded.

Pour plus d’informations sur les fenêtres Autos et Locals, consultez Inspecter les variables dans les fenêtres Autos et Locals.

Définir un espion

Dans la fenêtre principale de l’éditeur de code, cliquez avec le bouton droit sur la variable name, puis choisissez Ajouter un espion.

La fenêtre Espion s’ouvre en bas de l’éditeur de code. Vous pouvez utiliser une fenêtre Espion pour spécifier une variable (ou une expression) que vous voulez observer.

À présent, vous avez un espion défini sur la variable name, et vous pouvez voir sa valeur changer au fur et à mesure que vous vous déplacez dans le débogueur. Contrairement à d’autres fenêtres de variables, la fenêtre Espion présente toujours les variables que vous observez (elles apparaissent en grisé quand elles sont en dehors de l’étendue).

Vous pouvez spécifier une variable, ou une expression, sur laquelle vous souhaitez garder un œil lorsque vous parcourez le code, en l’ajoutant à la fenêtre Espion.

  1. Pendant que le débogueur est suspendu, cliquez avec le bouton droit sur la variable name et choisissez Ajouter un espion.

    La fenêtre Espion s’ouvre par défaut en bas de l’éditeur de code.

  2. Maintenant que vous avez défini un espion sur la variable name, parcourez votre code pour voir la valeur de la variable name changer à chaque itération de la boucle for.

    Contrairement à d’autres fenêtres de variables, la fenêtre Espion présente toujours les variables que vous observez. Les variables hors de l’étendue sont affichées comme indisponibles.

Pour plus d’informations sur la fenêtre Espion, consultez Observer des variables avec les fenêtres Espion.

Examiner la pile des appels

  1. L’exécution étant interrompue dans la boucle for, sélectionnez la fenêtre Pile des appels, qui est ouverte par défaut dans le volet inférieur droit.

    Si elle est fermée, ouvrez-la interrompue dans le débogueur en choisissant Déboguer>Windows>Pile des appels.

  2. Sélectionnez F11 plusieurs fois, jusqu’à ce que le débogueur place l’application en pause dans la méthode SendMessage. Regardez la fenêtre Pile des appels.

    Screenshot of the Call Stack window in Visual Studio.

    La fenêtre Pile des appels montre l’ordre dans lequel les méthodes et les fonctions sont appelées. La ligne du haut montre la fonction active (méthode SendMessage dans cette application). La deuxième ligne montre que SendMessage a été appelée à partir de la méthode Main, etc.

    Notes

    La fenêtre Pile des appels est similaire à la perspective Débogage dans certains IDE, comme Eclipse.

    La pile des appels est un bon moyen d’examiner et de comprendre le flux d’exécution d’une application.

    Vous pouvez double-cliquer sur une ligne de code pour accéder à ce code source, ce qui modifie également l’étendue active inspectée par le débogueur. Cette action ne fait pas avancer le débogueur.

    Vous pouvez également utiliser les menus contextuels de la fenêtre Pile des appels pour faire d’autres choses. Par exemple, vous pouvez insérer des points d’arrêt dans des fonctions spécifiées, faire avancer le débogueur avec Exécuter jusqu’au curseur et aller examiner le code source. Pour plus d’informations, consultez Guide pratique pour examiner la pile des appels.

La pile des appels peut vous aider à comprendre le flux d’exécution de votre application, en montrant l’ordre dans lequel les méthodes et les fonctions sont appelées.

  1. Pendant que le débogueur est suspendu dans la boucle for, consultez la fenêtre Pile des appels, qui s’ouvre par défaut dans le volet inférieur droit de l’éditeur de code.

    Si la fenêtre Pile des appels est fermée, sélectionnez Ctrl+D, C ou choisissez Déboguer>Fenêtres>Pile des appels dans la barre de menus.

    Dans la fenêtre Pile des appels, vous voyez le pointeur jaune au niveau de la méthode Main active.

  2. Sélectionnez F11 plusieurs fois, jusqu’à ce que le débogueur place l’application en pause dans la méthode SendMessage.

    La ligne supérieure de la fenêtre Pile des appels affiche la fonction active, qui est la méthode SendMessage. La deuxième ligne montre que la méthode SendMessage a été appelée à partir de la méthode Main.

    Screenshot of the Call Stack window in Visual Studio 2022.

    Note

    La fenêtre Pile des appels est similaire à la perspective Débogage dans certains IDE, comme Eclipse.

    Dans la fenêtre Pile des appels, vous pouvez double-cliquer sur une ligne de code pour accéder à ce code source, ce qui change également l’étendue active inspectée par le débogueur. Cette action ne fait pas avancer le débogueur.

    Vous pouvez également utiliser les menus contextuels de la fenêtre Pile des appels pour faire d’autres choses. Par exemple, vous pouvez insérer des points d’arrêt dans des fonctions spécifiées, faire avancer le débogueur avec Exécuter jusqu’au curseur ou examiner le code source.

Pour plus d’informations sur la pile des appels, consultez Guide pratique pour examiner la pile des appels.

Changer le flux d’exécution

  1. Appuyez sur F11 à deux reprises pour exécuter la méthode Console.WriteLine.

  2. Le débogueur étant interrompu dans l’appel de méthode SendMessage, utilisez la souris pour saisir la flèche jaune ou le pointeur d’exécution (dans la marge gauche), puis faites glisser le pointeur d’une ligne vers le haut jusqu’à l’instruction Console.WriteLine.

  3. Appuyez sur F11.

    Le débogueur réexécute la méthode Console.WriteLine (vous voyez cette action dans la sortie de la fenêtre de console).

    En changeant le flux d’exécution, vous pouvez effectuer des opérations comme tester d’autres chemins d’exécution du code ou réexécuter du code sans devoir redémarrer le débogueur.

    Avertissement

    Vous devez rester prudent avec cette fonctionnalité, vous pouvez voir un avertissement dans l’info-bulle. Vous pouvez aussi en voir d’autres. Le fait de déplacer le pointeur ne peut pas rétablir votre application à un état antérieur.

  4. Appuyez sur F5 pour poursuivre l’exécution de l’application.

    Félicitations ! Vous avez terminé ce didacticiel.

Vous pouvez déplacer le pointeur d’exécution pour modifier le flux de votre application lors du débogage.

  1. Lorsque le débogueur est suspendu au niveau de l’appel de méthode SendMessage dans la boucle for, sélectionnez F11 trois fois pour effectuer un pas à pas détaillé dans la méthode SendMessage et passer la méthode Console.WriteLine après l’avoir exécutée.

    Le débogueur est maintenant suspendu à l’accolade de fermeture finale de la méthode SendMessage.

  2. Utilisez la souris pour sélectionner la flèche jaune ou le pointeur d’exécution (dans la marge gauche), puis faites glisser le pointeur d’une ligne vers le haut.

    Le débogueur est maintenant de retour sur l’instruction Console.WriteLine.

  3. Sélectionnez F11.

    Le débogueur réexécute la méthode Console.WriteLine et vous voyez une ligne en double dans la sortie de la fenêtre de console.

  4. Sélectionnez F5 pour poursuivre l’exécution de l’application.

En changeant le flux d’exécution, vous pouvez effectuer des opérations comme tester d’autres chemins d’exécution du code ou réexécuter du code sans devoir redémarrer le débogueur.

Avertissement

Utilisez cette fonctionnalité avec précaution. Vous verrez un avertissement dans l’info-bulle du pointeur d’exécution concernant la possibilité de conséquences inattendues. D’autres avertissements peuvent également s’afficher. Le fait de déplacer le pointeur d’exécution ne peut pas rétablir votre application à un état antérieur.

Pour plus d’informations sur la modification du flux d’exécution, consultez Déplacer le pointeur pour modifier le flux d’exécution.

Félicitations ! Vous avez terminé ce didacticiel.

Étapes suivantes

Dans ce tutoriel, vous avez découvert comment démarrer le débogueur, parcourir le code pas à pas et inspecter des variables. Vous pouvez obtenir une présentation générale des fonctionnalités du débogueur et suivre des liens qui donnent accès à plus d’informations.