Déboguer votre application avec GitHub Copilot dans Visual Studio
Dans cet article, vous apprendrez à déboguer plus efficacement en utilisant GitHub Copilot. Copilot peut fournir des corrections de code ainsi qu'une analyse et des explications approfondies 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, ainsi que pour tous ceux décrits dans les scénarios améliorés par l'IA pour le débogage. Dans la plupart de ces scénarios, recherchez le bouton Demander à 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 :
Visual Studio 2022 version 17.8 ou ultérieure
Se connecter à Visual Studio en utilisant un compte GitHub avec accès à Copilot
** Vous pouvez utiliser GitHub Copilot gratuitement. Inscrivez-vous et tirez profit de l’IA pour coder plus rapidement et plus efficacement.GitHub Copilot dans Visual Studio
GitHub Copilot Chat dans Visual Studio
Remarque
Si vous rencontrez des problèmes d’authentification après l’installation de l’extension, consultez Résolution des problèmes d’authentification avec GitHub Copilot Chat.
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 en utilisant la fenêtre de chat séparée en sélectionnantAffichage > GitHub Copilot Chat. Pour plus d'informations, consultez Qu'est-ce que l'extension GitHub Copilot Chat pour Visual Studio ?.
Démarrer une session de débogage
Dans Visual Studio, créez une nouvelle application en ligne de commande C#.
Dans la fenêtre de démarrage, choisissez Créer un projet. Saisissez console dans la zone de recherche, sélectionnez C# comme langage, puis choisissez Application en ligne de commande pour .NET. Choisissez Suivant. Saisissez un nom de projet comme ConsoleApp_Copilot, puis sélectionnez Suivant.
Choisissez l’infrastructure cible recommandée ou .NET 8, puis sélectionnez Créer.
Si vous ne voyez pas le modèle de projet Application console pour .NET, accédez à Outils>Obtenir les outils et fonctionnalités, qui ouvre Visual Studio Installer. Choisissez la charge de travail Développement .NET Desktop, puis choisissez Modifier.
Visual Studio crée le projet de console, qui apparaît dans l’Explorateur de solutions dans le volet droit.
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"); } }
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]);
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]
.Cliquez avec le bouton droit de la souris dans le code et choisissez Demander au copilote pour ouvrir la vue Chat en ligne.
Conseil
Vous pouvez également cliquer avec le bouton droit de la souris sur une variable dans la fenêtre Autos ou Locals, ou dans une astuce de données, et choisir Ask Copilot. Copilot reçoit ainsi le nom de la variable et le contexte, de sorte que vous n'avez pas besoin de fournir le contexte vous-même dans le chat.
Tapez la question suivante dans la vue Chat en ligne :
Why does the args variable have a value of string[0]?
Lorsque vous appuyez sur Entrée, 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).
Si Copilot a suggéré une correction pour votre code, il vous l'indique. Si ce n'est pas le cas, vous pouvez demander à Copilot de vous suggérer un code.
Conseil
Dans le chat intégré, utilisez le symbole # et sélectionnez dans la liste déroulante pour transmettre des informations spécifiques à Copilot tout en y faisant référence 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.
Dans cet exemple, faites défiler jusqu'à la fin de la réponse de Copilot et sélectionnez la question de suivi à la fin de la fenêtre de discussion en ligne, « Comment puis-je gérer l'incident lorsqu'aucun argument n'est transmis au programme ? »
Copilot propose une correction de votre code.
Si vous souhaitez appliquer la correction du code, sélectionnez Accepter.
Choisissez Annuler pour continuer à apprendre d'autres fonctions 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
Lorsque vous êtes en pause dans le débogueur et que vous utilisez la même application, appuyez sur F11 ou sur Debug>Step Into pour exécuter l'instruction en cours.
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
Une fois l’application mise en pause sur l’exception, sélectionnez le bouton Demander à Copilot.
Si elle n’est pas déjà ouverte, la fenêtre Conversation Copilot apparaît, et donne une évaluation de l’erreur et de la raison pour laquelle elle s’est produite. Dans cet exemple, Copilot identifie un correctif suggéré du code, un bouton pour copier le code et un bouton Aperçu pour le correctif du code.
Si vous avez des questions sur l’exception, posez-les dans la zone de texte Demander à Copilot.
Sélectionnez le bouton Aperçu.
Visual Studio montre un aperçu du code avec le correctif suggéré.
Passez en revue la correctif suggérée et choisissez Accepter pour appliquer la suggestion de code.
Redémarrez le débogueur.
Cette fois, aucune exception ne se produit. Elle a été corrigée.
Obtenir des suggestions avec des points d’arrêt conditionnels et des points de trace
Copilot vous propose des suggestions pour les points d’arrêt conditionnels et les points de trace 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.
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.
Remplacez la ligne de code suivante :
names.Add("Major Major Major");
par le code :
// names.Add("Major Major Major"); foreach (var item in args) { names.Add("Name: " + item); }
À gauche de l’instruction
names.Add("Name: " + item)
, cliquez avec le bouton droit dans la ligne de séparation et choisissez Insérer un point d’arrêt conditionnel.Sélectionnez le champ d’expression et Copilot commence à travailler sur des suggestions.
Lorsque les suggestions apparaissent, choisissez l’une d’entre elles, comme celle-ci
item == "John"
. Modifiez la suggestion pour que le nom soitFred
.Pour tester l’expression conditionnelle :
Cliquez avec le bouton droit de la souris sur le projet ConsoleApp_Copilot dans l’explorateur de solutions et choisissez Propriétés.
Sélectionnez Débogage>Général>Ouvrir l’IU de profils de lancement de débogage.
Dans le champ Arguments de ligne de commande, saisissez
5 Fred Joe
, sur trois lignes distinctes.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 bienFred
.
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 |
---|---|
Exceptions | Consultez Déboguer une exception avec Copilot dans cet article. L’aide concernant les exceptions inclut l’aide pour les erreurs de détection de blocage. |
Variables | Consultez Déboguer à l’aide de Copilot dans cet article. |
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 Modifier l’expression du visualiseur. |
Valeurs de retour inline | Consultez Afficher les valeurs de retour des appels de méthode. |
Descriptions des threads de synthèse | Consultez Vue des threads (Piles parallèles). |
Aperçus automatiques pour le profilage | Consultez Obtenez une assistance de l'intelligence artificielle avec les insights automatiques. |
Dans la plupart de ces scénarios, vous bénéficiez d’une assistance ciblée à l’aide du bouton Demander 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 sur laquelle vous posez une question et le nom de l'exception (s'il y en a une), de sorte que vous n'avez pas besoin de fournir le contexte vous-même dans la discussion. Copilot fournit également des suggestions pour l’utilisation de points d’arrêt conditionnels et de points de trace.