Déboguer votre application avec GitHub Copilot dans Visual Studio

Dans cet article, vous allez apprendre à déboguer plus efficacement à l'aide de GitHub Copilot. Copilot pouvez fournir des correctifs de code, ainsi qu’une analyse approfondie et des explications sur le fonctionnement du code. Il vous aide à proposer des corrections de bogues et explique des éléments tels que les exceptions. Copilot comprend les piles d’appels, les cadres, les noms de variables et les valeurs. Ainsi, vous pouvez interagir avec l'IA sensibilisée au débogage pour poser des questions détaillées sur votre code et sur les problèmes de débogage en général.

En outre, Copilot fournit une aide plus précise pour certains scénarios ciblés, tels que les exceptions, et toutes celles décrites dans scénarios améliorés par l’IA pour le débogage. Dans la plupart de ces scénarios, recherchez le bouton Ask CopilotCapture d'écran du bouton Ask Copilot. ou Analyser avec Copilot. Dans ces scénarios, Copilot connaît déjà le contexte de vos questions.

Pour plus d’informations sur l’extension GitHub Copilot dans Visual Studio, consultez À propos de l’extension GitHub Copilot dans Visual Studio.

Prérequis

Pour commencer, vous avez besoin des éléments suivants :

Scénarios améliorés par l’IA

Copilot comprend les piles d’appels, les cadres, les noms de variables et les valeurs. Ainsi, vous pouvez interagir avec l'IA sensibilisée au débogage pour poser des questions détaillées sur votre code et sur les problèmes de débogage en général.

En outre, Copilot fournit une aide plus précise pour certains scénarios ciblés, tels que ceux décrits dans le tableau suivant.

Fonctionnalité ou scénario Lien
Agent de débogage Consultez la résolution des bogues agentiques avec l’agent débogueur dans cet article. Flux de travail agentique de bout en bout qui reproduit les bogues, instrumente votre application et valide les correctifs à l’aide de données d'exécution en direct.
Analyse de la pile des appels Consultez Analyser la pile d'appels avec Copilot. Obtenez une analyse avec un simple clic de ce que fait votre fil, y compris les explications des flux asynchrones.
Exceptions Consultez Déboguer une exception avec Copilot dans cet article. L’aide concernant les exceptions inclut de l’aide sur les erreurs de détection de blocage.
Variables Consultez Obtenir de l’aide à l’IA.
Analyse des requêtes LINQ Pointez sur les requêtes LINQ lors du débogage dans l’éditeur de code pour afficher la valeur de retour. Sélectionnez le bouton Analyze avec Copilot pour obtenir de l’aide sur l’IA. Consultez Afficher les valeurs de retour des requêtes LINQ.
Conseils sur les données Consultez Obtenir de l’aide à l’IA pour obtenir des conseils sur les données.
Points d’arrêt conditionnels et points de trace Consultez Obtenir des suggestions avec des points d’arrêt conditionnels et des points de trace dans cet article.
Actions rapides (ampoule) Consultez Obtenez l’aide de l’IA avec les actions rapides.
Visualiseur tabulaire IEnumerable Consultez Obtenir de l’aide à l’IA.
Détection et mise en forme automatiques dans le visualiseur de texte Voir Détection et format automatiques. Copilot identifie automatiquement les chaînes codées ou compressées et les décode en un seul clic.
Valeurs de retour inline Consultez Afficher les valeurs de retour des appels de méthode.
Valeurs inline Consulter Afficher les valeurs inline.
Débogage multithread Consultez Obtenez une assistance de l’IA avec la vue Threads.
Test des unités Consultez Obtenir l’aide de l’IA pour le débogage des tests
Inspecter les exceptions avec le contexte du dépôt Consultez Obtenez l’aide de l’IA avec le contexte du référentiel
Dépannage des points d’arrêt Consultez Obtenir de l’aide à l’IA.
Fonctionnalité ou scénario Lien
Analyse de la pile des appels Consultez Analyser la pile d'appels avec Copilot. Obtenez une analyse avec un simple clic de ce que fait votre fil, y compris les explications des flux asynchrones.
Exceptions Consultez Déboguer une exception avec Copilot dans cet article. L’aide concernant les exceptions inclut de l’aide sur les erreurs de détection de blocage.
Variables Consultez Obtenir de l’aide à l’IA.
Analyse des requêtes LINQ Pointez sur les requêtes LINQ lors du débogage dans l’éditeur de code pour afficher la valeur de retour. Sélectionnez le bouton Analyze avec Copilot pour obtenir de l’aide sur l’IA. Consultez Afficher les valeurs de retour des requêtes LINQ.
Conseils sur les données Consultez Obtenir de l’aide à l’IA pour obtenir des conseils sur les données.
Points d’arrêt conditionnels et points de trace Consultez Obtenir des suggestions avec des points d’arrêt conditionnels et des points de trace dans cet article.
Actions rapides (ampoule) Consultez Obtenez l’aide de l’IA avec les actions rapides.
Visualiseur tabulaire IEnumerable Consultez Obtenir de l’aide à l’IA.
Valeurs de retour inline Consultez Afficher les valeurs de retour des appels de méthode.
Valeurs inline Consulter Afficher les valeurs inline.
Débogage multithread Consultez Obtenez une assistance de l’IA avec la vue Threads.
Test des unités Consultez Obtenir l’aide de l’IA pour le débogage des tests
Inspecter les exceptions avec le contexte du dépôt Consultez Obtenez l’aide de l’IA avec le contexte du référentiel
Dépannage des points d’arrêt Consultez Obtenir de l’aide à l’IA.

Dans la plupart de ces scénarios, vous obtenez une assistance ciblée soit en utilisant le bouton Demandez à CopilotScreenshot du bouton Demandez à Copilot. soit en utilisant le bouton Analysez avec Copilot. Copilot connaît déjà le contexte de vos questions. Par exemple, il connaît la pile des appels actuelle, la ligne de code à propos de laquelle vous vous demandez et le nom de l’exception (le cas échéant), de sorte que vous n’avez pas besoin de fournir le contexte vous-même dans la conversation. Copilot fournit également des suggestions pour l’utilisation de points d’arrêt conditionnels et de points de trace.

Déboguer à l’aide de Copilot

L'exemple suivant montre comment obtenir l'aide de l'IA à l'aide de la vue Chat en ligne.

Remarque

Vous pouvez également obtenir de l’aide à l’aide de la fenêtre de conversation distincte en sélectionnant View > GitHub Copilot Chat. Pour plus d’informations, consultez Quelle est l’extension gitHub Copilot Chat pour Visual Studio ?.

Démarrer une session de débogage

  1. Dans Visual Studio, créez une application console C#.

    Dans la fenêtre de démarrage, choisissez Créer un projet. Tapez console dans la zone de recherche, sélectionnez C# comme langue, puis choisissez Console App pour .NET. Choisissez Suivant. Saisissez un nom de projet comme ConsoleApp_Copilot, puis sélectionnez Suivant.

    Choisissez l’infrastructure cible recommandée ou .NET 10, puis Create.

    Si vous ne voyez pas le modèle de projet Console App pour .NET, accédez à Tools>Get Tools and Features, qui ouvre le programme d'installation Visual Studio. Choisissez la charge de travail Développement .NET Desktop, puis choisissez Modifier.

    Visual Studio crée le projet de console, qui apparaît dans Solution Explorer dans le volet droit.

  2. Remplacez le code dans Program.cs par le code suivant :

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
        public static void Main(string[] args)
        {
            int value = Int32.Parse(args[0]);
            List<String> names = null;
            if (value > 0)
                names = new List<String>();
    
            names.Add("Major Major Major");
        }
    }
    
  3. Cliquez avec le bouton droit de la souris sur l'instruction suivante et choisissez Point d’arrêt>Insérer un point d’arrêt.

    int value = Int32.Parse(args[0]);
    
  4. Appuyez sur F5 ou sélectionnez Démarrer le débogage dans le menu Déboguer.

    L’application s’interrompt au point d’arrêt. La fenêtre Autos montre que la variable args a une valeur de string[0].

    Capture d’écran de la fenêtre Auto.

  1. Cliquez avec le bouton droit dans le code et choisissez Chat pour ouvrir l’affichage Chat inline.
  1. Cliquez avec le bouton droit dans le code et choisissez Ask Copilot pour ouvrir l’affichage conversation inline.

Conseil

Vous pouvez également faire un clic droit sur une variable dans la fenêtre Autos ou Locals, ou sur un data tip, puis choisir Ask Copilot. Cela fournit Copilot avec le nom et le contexte de la variable. Vous n'avez donc pas besoin de fournir le contexte vous-même dans la conversation.

  1. Tapez la question suivante dans la vue Chat en ligne :

    Why does the args variable have a value of string[0]?
    

Capture d'écran de Copilot Chat en ligne.

Lorsque vous appuyez sur Enter, Copilot fournit une réponse basée sur sa compréhension de votre code. (Il se peut que vous obteniez une réponse différente de celle présentée ici).

Screenshot de la question répondue par Copilot.

Si Copilot a un correctif suggéré pour votre code, il vous montre. Si ce n’est pas le cas, vous pouvez demander Copilot pour une suggestion de code.

Conseil

Dans la conversation inline, utilisez le symbole « # » et sélectionnez-le dans la liste déroulante pour transmettre des informations spécifiques à Copilot pendant que vous le référencez dans votre question. Par exemple, si vous sélectionnez une partie du code, puis tapez #, vous pouvez choisir cette sélection dans la liste déroulante #. Vous pouvez également utiliser le symbole # pour faire référence aux fonctions de l’IDE qui apparaissent dans la liste déroulante, telles que la fenêtre Locals.

  1. Dans cet exemple, faites défiler jusqu’à la fin de la réponse Copilot et sélectionnez la question de suivi à la fin de la fenêtre de conversation inline, « Comment puis-je gérer le cas quand aucun argument n’est passé au programme ? »

    Capture d'écran de la question de suivi de Copilot.

    Copilot affiche un correctif suggéré pour votre code.

    Screenshot de correctif suggéré par Copilot.

    Si vous souhaitez appliquer le correctif de code, sélectionnez Tab.

  2. Sélectionnez Alt+Delete pour continuer à apprendre d’autres fonctionnalités de Copilot dans la section suivante.

Capture d'écran de Copilot Chat en ligne.

Lorsque vous appuyez sur Enter, Copilot fournit une réponse basée sur sa compréhension de votre code. (Il se peut que vous obteniez une réponse différente de celle présentée ici).

Capture d'écran de la réponse de Copilot à la question.

Si Copilot a un correctif suggéré pour votre code, il vous montre. Si ce n’est pas le cas, vous pouvez demander Copilot pour une suggestion de code.

Conseil

Dans la conversation inline, utilisez le symbole « # » et sélectionnez-le dans la liste déroulante pour transmettre des informations spécifiques à Copilot pendant que vous le référencez dans votre question. Par exemple, si vous sélectionnez une partie du code, puis tapez #, vous pouvez choisir cette sélection dans la liste déroulante #. Vous pouvez également utiliser le symbole # pour faire référence aux fonctions de l’IDE qui apparaissent dans la liste déroulante, telles que la fenêtre Locals.

  1. Dans cet exemple, faites défiler jusqu’à la fin de la réponse Copilot et sélectionnez la question de suivi à la fin de la fenêtre de conversation inline, « Comment puis-je gérer le cas quand aucun argument n’est passé au programme ? »

    Capture d'écran de la question de suivi de Copilot.

    Copilot affiche un correctif suggéré pour votre code.

    Capture d'écran de la correction suggérée par Copilot.

    Si vous souhaitez appliquer la correction du code, sélectionnez Accepter.

  2. Choisissez Cancel afin de continuer à apprendre d’autres fonctionnalités de Copilot dans la section suivante.

Déboguer une exception avec Copilot

L’exemple simple suivant montre comment obtenir de l’aide de l’IA quand vous rencontrez une exception et comment mettre à jour rapidement votre code en fonction des correctifs suggérés par l’IA.

Démarrer une session de débogage

  • Quand vous êtes en pause dans le débogueur en utilisant le même exemple d’application, appuyez sur F11 ou choisissez Débogage>Entrer dans pour exécuter l’instruction actuelle.

    Une exception IndexOutOfRangeException se produit et l’application s’interrompt, montrant l’exception.

    Pour obtenir de l’aide de l’IA pour l’exception, passez à la section suivante.

Demander de l’aide à l’IA

  1. Une fois l’application suspendue à l’exception, sélectionnez le bouton Analyze avec Copilot.

    Capture d'écran du bouton

    S'il n'est pas déjà ouvert, la fenêtre Copilot Chat s'affiche et fournit une évaluation de l'erreur et la raison pour laquelle elle s'est produite. Dans cet exemple, Copilot identifie un correctif de code suggéré, un bouton pour copier du code et un bouton Preview pour le correctif de code.

    Si vous avez des questions sur l’exception, posez-les dans la zone de texte Ask Copilot.

    Capture d'écran du bouton Aperçu dans la fenêtre Copilot Chat.

  2. Dans la fenêtre de conversation Copilot, indiquez Copilot que vous souhaitez qu’elle empêche l’erreur.

  3. Lorsque Copilot suggère un correctif dans la fenêtre de conversation, sélectionnez Apply.

  4. Passez en revue le correctif suggéré et sélectionnez Tab pour appliquer la suggestion de code.

    Screenshot de l’aperçu du code dans Visual Studio.

  5. Redémarrez le débogueur.

    Cette fois, aucune exception ne se produit. Elle a été corrigée.

  1. Une fois l’application suspendue à l’exception, sélectionnez le bouton Demander à Copilot.

    Capture d'écran du bouton

    S'il n'est pas déjà ouvert, la fenêtre Copilot Chat s'affiche et fournit une évaluation de l'erreur et la raison pour laquelle elle s'est produite. Dans cet exemple, Copilot identifie un correctif de code suggéré, un bouton pour copier du code et un bouton Preview pour le correctif de code.

    Si vous avez des questions sur l’exception, posez-les dans la zone de texte Ask Copilot.

  2. Sélectionnez le bouton Aperçu.

    Capture d'écran du bouton Aperçu dans la fenêtre Copilot Chat.

    Visual Studio affiche un aperçu du code avec le correctif suggéré.

  3. Passez en revue la correctif suggérée et choisissez Accepter pour appliquer la suggestion de code.

    Screenshot de l’aperçu du code dans Visual Studio.

  4. Redémarrez le débogueur.

    Cette fois, aucune exception ne se produit. Elle a été corrigée.

Résolution de bogues agentiques avec l’Agent Débogueur

L’agent de débogueur fournit un flux de travail agentique de bout en bout qui valide les bogues par rapport au comportement réel du runtime au lieu de s’appuyer sur une analyse statique. L’expérience vous guide tout au long d’une boucle agentique complète : compréhension et reproduction du problème, instrumentation de l’application, isolation de la cause racine et validation du correctif via l’exécution en direct.

Vous pouvez commencer à partir d’un problème dans GitHub ou Azure DevOps, ou décrire le bogue en langage naturel. L’agent de débogueur mappe le problème à votre code source local et vous guide tout au long de la résolution. Vous pouvez interagir avec l’agent pendant le processus de débogage pour fournir plus d’entrée, discuter de votre théorie ou affiner le correctif en temps réel.

Pour utiliser l’agent de débogage :

  1. Ouvrez la fenêtre Copilot Chat (View > GitHub Copilot Chat).
  2. Sélectionnez Débogueur dans la liste déroulante du mode, située dans le coin inférieur gauche de la fenêtre de discussion.
  3. Fournissez un lien pour un problème GitHub ou Azure DevOps, ou décrivez le bug dans un langage naturel.

Screenshot affichant le sélecteur d’agents avec des agents personnalisés dans Visual Studio.

L’agent de débogueur fonctionne comme suit :

  • Injection de contexte : connecte le problème ou la description de bogue à votre code source local.
  • Reproduire autonome : analyse le bogue et, si les étapes de reproduction sont manquantes, crée un scénario minimal pour déclencher l’échec.
  • Hypothèse et instrumentation : génère des hypothèses d’échec et instrumente votre application avec des points de trace et des points d’arrêt conditionnels pour capturer l’état d’exécution.
  • Validation du runtime : exécute la session de débogage et analyse les données de télémétrie actives pour isoler la cause racine.
  • Correction ciblée : suggère un correctif précis au point d’échec exact plutôt qu’à une refactorisation large.
  • Validation humaine finale : vous réexécutez le scénario et confirmez le correctif dans l’environnement actif en même temps que l’agent.

En mode Agent dans la conversation, vous pouvez également basculer vers l’agent débogueur en utilisant @debugger dans le champ de saisie de la conversation. Pour plus d’informations sur l’agent de débogueur et d’autres agents intégrés, consultez Utiliser des agents intégrés et personnalisés avec GitHub Copilot.

Recevez des suggestions avec des points d’arrêt conditionnels et des points de trace.

Copilot vous propose des suggestions de points d’arrêt conditionnels et tracepoints spécifiques à votre code.

Dans cet exemple, nous affichons les suggestions de l’IA pour un point d’arrêt conditionnel. Pour les points de trace, l’assistance IA fonctionne de la même façon.

  1. Supprimez le point d’arrêt actuel en cliquant dessus ou en cliquant avec le bouton droit, puis choisissez Supprimer le point d’arrêt.

  2. Remplacez la ligne de code suivante :

    names.Add("Major Major Major");
    

    avec ceci :

    // names.Add("Major Major Major");
    foreach (var item in args)
    {
       names.Add("Name: " + item);
    }
    
  3. À gauche de l’instruction names.Add("Name: " + item), cliquez avec le bouton droit dans la marge et choisissez Insérer un point d’arrêt conditionnel.

  4. Sélectionnez le champ d’expression et Copilot commence à proposer des suggestions.

    Capture d'écran de Copilot travaillant sur des suggestions de points d’arrêt conditionnels.

  1. Lorsque les suggestions s’affichent, choisissez-en une, par exemple item == "Test". Modifiez la suggestion pour que le nom soit Fred.

    Capture d’écran d’une suggestion de Copilot pour un point d’arrêt conditionnel.

  1. Lorsque les suggestions apparaissent, choisissez l’une d’entre elles, comme celle-ci item == "John". Modifiez la suggestion pour que le nom soit Fred.

    Capture d'écran de la suggestion de point d’arrêt conditionnel par Copilot.

  1. Pour tester l’expression conditionnelle :

    1. Cliquez avec le bouton droit sur le projet ConsoleApp_Copilot dans Solution Explorer, puis choisissez Properties.

    2. Sélectionnez Débogage>Général>Ouvrir l'interface utilisateur des profils de lancement de débogage.

    3. Dans le champ Arguments de ligne de commande, saisissez 5 Fred Joe, sur trois lignes distinctes.

      Capture d’écran de la saisie d’arguments de ligne de commande pour le projet.

    4. Redémarrez le débogueur.

    Lorsque le débogueur s’interrompt au point d’arrêt, vérifiez la valeur de item et vérifiez que la valeur actuelle soit bien Fred.