Fouten opsporen in uw app met GitHub Copilot in Visual Studio

In dit artikel leert u hoe u efficiënter fouten kunt opsporen met behulp van GitHub Copilot. Copilot kan oplossingen voor code bieden, samen met uitgebreide analyses en uitleg over de werking van code. Het helpt bij voorgestelde oplossingen voor bugs en legt zaken uit zoals uitzonderingen. Copilot begrijpt aanroepstacks, frames, variabelenamen en waarden. Als gevolg hiervan kunt u communiceren met de foutopsporingsprogrammabewuste AI om gedetailleerde vragen te stellen met betrekking tot uw code en om problemen in het algemeen op te sporen.

Daarnaast biedt Copilot nauwkeurigere hulp voor een aantal gerichte scenario's, zoals Uitzonderingen, en alle scenario's die worden beschreven in AI-uitgebreide scenario's voor foutopsporing. Zoek in de meeste van deze scenario's naar de Ask CopilotSchermopname van Ask Copilot button. of Analyze met de knop Copilot. In deze scenario's weet Copilot al de context voor uw vragen.

Zie Over GitHub Copilot Voltooiingen in Visual Studio voor meer informatie over GitHub Copilot voltooiingen in Visual Studio.

Voorwaarden

U hebt het volgende nodig om aan de slag te gaan:

Door AI verbeterde scenario's

Copilot begrijpt aanroepstacks, frames, variabelenamen en waarden. Als gevolg hiervan kunt u communiceren met de foutopsporingsprogrammabewuste AI om gedetailleerde vragen te stellen met betrekking tot uw code en om problemen in het algemeen op te sporen.

Daarnaast biedt Copilot nauwkeurigere hulp voor een aantal gerichte scenario's, zoals de scenario's die in de volgende tabel worden beschreven.

Kenmerk of scenario Verbinden
Agent voor foutopsporing Zie Agentic bug resolution with the Debugger Agent in dit artikel. End-to-end agent-gebaseerde werkstroom die bugs reproduceert, uw app instrumenteert en oplossingen valideert met behulp van live runtime-gegevens.
Analyse van aanroepstack Zie Analyze-aanroepstack met Copilot. Bekijk een analyse met één klik van wat uw thread doet, inclusief asynchrone stroomuitleg.
Uitzonderingen Zie Een uitzondering debuggen met Copilot in dit artikel. Hulp bij uitzonderingen omvat hulp bij deadlockdetectiefouten.
Variabelen Zie Hulp bij AI krijgen.
LINQ-queryanalyse Beweeg de muisaanwijzer over LINQ-query's tijdens foutopsporing in de code-editor om de retourwaarde weer te geven. Selecteer de knop Analyseren met Copilot voor AI-assistentie. Zie Retourwaarden van LINQ-query's weergeven.
Tips voor gegevens Zie Hulp bij AI krijgen met tips voor gegevens.
Voorwaardelijke onderbrekingspunten en traceringspunten Zie voor suggesties door middel van voorwaardelijke onderbrekingspunten en traceringspunten in dit artikel.
Snelle acties (gloeilamp) Zie Hulp bij AI krijgen met snelle acties.
IEnumerable tabellarische visualisator Zie Hulp bij AI krijgen.
Automatisch detecteren en opmaken in Tekstvisualisator Zie Automatisch detecteren en opmaken. Copilot identificeert automatisch gecodeerde of gecomprimeerde tekenreeksen en ontsleutelt ze in één klik.
Inline retourwaarden Zie Weergeven van retourwaarden van methodeaanroepen.
Inlinewaarden Zie Inlinewaarden weergeven.
Multithreaded debuggen Zie Ai-hulp krijgen met de threads-weergave.
Het testen van modules Zie Hulp bij AI krijgen voor foutopsporingstests
Uitzonderingen onderzoeken met repo-context Zie AI-assistentie ontvangen met repo-context
Onderbrekingspunten oplossen Zie Hulp bij AI krijgen.
Kenmerk of scenario Verbinden
Analyse van aanroepstack Zie Analyze-aanroepstack met Copilot. Bekijk een analyse met één klik van wat uw thread doet, inclusief asynchrone stroomuitleg.
Uitzonderingen Zie Een uitzondering debuggen met Copilot in dit artikel. Hulp bij uitzonderingen omvat hulp bij deadlockdetectiefouten.
Variabelen Zie Hulp bij AI krijgen.
LINQ-queryanalyse Beweeg de muisaanwijzer over LINQ-query's tijdens foutopsporing in de code-editor om de retourwaarde weer te geven. Selecteer de knop Analyseren met Copilot voor AI-assistentie. Zie Retourwaarden van LINQ-query's weergeven.
Tips voor gegevens Zie Hulp bij AI krijgen met tips voor gegevens.
Voorwaardelijke onderbrekingspunten en traceringspunten Zie voor suggesties door middel van voorwaardelijke onderbrekingspunten en traceringspunten in dit artikel.
Snelle acties (gloeilamp) Zie Hulp bij AI krijgen met snelle acties.
IEnumerable tabellarische visualisator Zie Hulp bij AI krijgen.
Inline retourwaarden Zie Weergeven van retourwaarden van methodeaanroepen.
Inlinewaarden Zie Inlinewaarden weergeven.
Multithreaded debuggen Zie Ai-hulp krijgen met de threads-weergave.
Het testen van modules Zie Hulp bij AI krijgen voor foutopsporingstests
Uitzonderingen onderzoeken met repo-context Zie AI-assistentie ontvangen met repo-context
Onderbrekingspunten oplossen Zie Hulp bij AI krijgen.

In de meeste van deze scenario's krijgt u gerichte hulp met behulp van de Ask CopilotSchermopname van Ask Copilot button. of Analyze met Copilot knop. Copilot weet al de context voor uw vragen. Het kent bijvoorbeeld de huidige aanroepstack, de coderegel waarover u vraagt en de naam van de uitzondering (als er een is opgetreden), zodat u zelf geen context hoeft op te geven in de chat. Copilot biedt ook suggesties voor het gebruik van voorwaardelijke onderbrekingspunten en traceringspunten.

Fouten opsporen met behulp van Copilot

In het volgende eenvoudige voorbeeld ziet u hoe u AI-hulp kunt krijgen met behulp van de inline chatweergave.

Notitie

U kunt ook hulp krijgen bij het gebruik van het afzonderlijke chatvenster door View > GitHub Copilot Chat te selecteren. Zie What is de GitHub Copilot Chat-extensie voor Visual Studio? voor meer informatie.

Een foutopsporingssessie starten

  1. Maak in Visual Studio een nieuwe C#-console-app.

    Kies in het startvenster Een nieuw project maken. Typ console in het zoekvak, selecteer C# als taal en kies vervolgens Console-app voor .NET. Kies Volgende. Typ een projectnaam zoals ConsoleApp_Copilot en selecteer Volgende.

    Kies het aanbevolen doelframework of .NET 10 en kies vervolgens Maken.

    Als u de Console-app projectsjabloon voor .NET niet ziet, gaat u naar Tools>Get-hulpprogramma's en -functies, waarmee het Visual Studio-installatieprogramma wordt geopend. Kies de workload .NET desktopontwikkeling en kies vervolgens Modify.

    Visual Studio maakt het consoleproject, dat wordt weergegeven in Solution Explorer in het rechterdeelvenster.

  2. Vervang de code in Program.cs door de volgende code:

    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. Klik met de rechtermuisknop op de volgende instructie en kies onderbrekingspunt>Onderbrekingspunt invoegen.

    int value = Int32.Parse(args[0]);
    
  4. Druk op F5- of selecteer Start Foutopsporing in het menu Foutopsporing.

    De app pauzeert op het onderbrekingspunt. In het venster Autos ziet u dat de argumentvariabele een waarde van string[0]heeft.

    Schermopname van het venster Autos.

  1. Klik met de rechtermuisknop in de code en kies Chat om de inline chatweergave te openen.
  1. Klik met de rechtermuisknop in de code en kies Ask Copilot om de inline chatweergave te openen.

Aanbeveling

U kunt ook met de rechtermuisknop op een variabele klikken in het venster Auto's of Locals of in een gegevenstip en Ask Copilot kiezen. Dit voorziet Copilot van de naam en context van de variabele, zodat u de context niet zelf hoeft te geven in de chat.

  1. Typ de volgende vraag in de inline chatweergave:

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

Schermafbeelding van inline Copilot Chat.

Wanneer u op Enter drukt, geeft Copilot een antwoord op basis van het begrip van uw code. (Mogelijk krijgt u een ander antwoord dan hier wordt weergegeven.)

Scherm van de vraag beantwoord door Copilot.

Als Copilot een voorgestelde oplossing voor uw code heeft, wordt dit weergegeven. Zo niet, dan kunt u Copilot vragen om een codesuggesties.

Aanbeveling

Gebruik in de inlinechat het symbool '#' en selecteer in de vervolgkeuzelijst om specifieke informatie aan Copilot te geven terwijl u ernaar verwijst in uw vraag. Als u bijvoorbeeld een deel van de code selecteert en vervolgens #typt, kunt u die selectie kiezen in de vervolgkeuzelijst #. U kunt ook het symbool '#' gebruiken om te verwijzen naar IDE-functies die worden weergegeven in de vervolgkeuzelijst, zoals het venster Locals.

  1. In dit voorbeeld schuift u naar het einde van het Copilot antwoord en selecteert u de vervolgvraag aan het einde van het inline chatvenster: 'Hoe kan ik de case afhandelen wanneer er geen argumenten aan het programma worden doorgegeven?'

    Schermafbeelding van de Copilot-vervolgvraag.

    Copilot toont een voorgestelde oplossing voor uw code.

    Scherm van oplossing voorgesteld door Copilot.

    Als u de codeoplossing wilt toepassen, selecteert u Tab.

  2. Selecteer Alt+Delete zodat we andere functies van Copilot kunnen blijven leren in de volgende sectie.

Schermafbeelding van inline Copilot Chat.

Wanneer u op Enter drukt, geeft Copilot een antwoord op basis van het begrip van uw code. (Mogelijk krijgt u een ander antwoord dan hier wordt weergegeven.)

Schermafbeelding van Copilot beantwoorde vraag.

Als Copilot een voorgestelde oplossing voor uw code heeft, wordt dit weergegeven. Zo niet, dan kunt u Copilot vragen om een codesuggesties.

Aanbeveling

Gebruik in de inlinechat het symbool '#' en selecteer in de vervolgkeuzelijst om specifieke informatie aan Copilot te geven terwijl u ernaar verwijst in uw vraag. Als u bijvoorbeeld een deel van de code selecteert en vervolgens #typt, kunt u die selectie kiezen in de vervolgkeuzelijst #. U kunt ook het symbool '#' gebruiken om te verwijzen naar IDE-functies die worden weergegeven in de vervolgkeuzelijst, zoals het venster Locals.

  1. In dit voorbeeld schuift u naar het einde van het Copilot antwoord en selecteert u de vervolgvraag aan het einde van het inline chatvenster: 'Hoe kan ik de case afhandelen wanneer er geen argumenten aan het programma worden doorgegeven?'

    Schermafbeelding van de Copilot-vervolgvraag.

    Copilot toont een voorgestelde oplossing voor uw code.

    Schermopname van Copilot voorgestelde fix.

    Als u de codeoplossing wilt toepassen, kiest u Accepteer.

  2. Kies Cancel zodat we andere functies van Copilot kunnen blijven leren in de volgende sectie.

Debuggen van een uitzondering met Copilot

In het volgende eenvoudige voorbeeld ziet u hoe u ai-hulp krijgt wanneer u een uitzondering tegenkomt en hoe u uw code snel kunt bijwerken op basis van door AI voorgestelde oplossingen.

Een foutopsporingssessie starten

  • Tijdens pauzeren in de debugger met dezelfde voorbeeld-app drukt u op F11 of Debug>Stap in om de huidige instructie uit te voeren.

    Een IndexOutOfRangeException treedt op en de app wordt onderbroken, waarbij de uitzondering wordt getoond.

    Als u AI-hulp voor de uitzondering wilt krijgen, gaat u verder met de volgende sectie.

Hulp bij AI vragen

  1. Als de toepassing is onderbroken bij de uitzondering, selecteer de knop Analyseren met Copilot.

    Schermopname van Ask Copilot knop in een exception.

    Als het venster nog niet is geopend, wordt het venster Copilot Chat weergegeven en wordt er een beoordeling gegeven van de fout en waarom deze is opgetreden. In dit voorbeeld identificeert Copilot een voorgestelde codeoplossing, een knop voor het kopiëren van code en een knop Voorbeeld voor de codeoplossing.

    Als u vragen hebt over de uitzondering, stelt u deze in het tekstvak Ask Copilot.

    Schermopname van de voorbeeldknop in het Copilot Chat-venster.

  2. Geef in het Copilot chatvenster Copilot aan dat u de fout wilt voorkomen.

  3. Wanneer Copilot een oplossing in het chatvenster voorstelt, selecteert u Apply.

  4. Controleer de voorgestelde oplossing en selecteer Tab om de codesuggesties toe te passen.

    Voorbeeld van code in Visual Studio.

  5. Start het foutopsporingsprogramma opnieuw.

    Deze keer treedt er geen uitzondering op. Het is opgelost!

  1. Selecteer de knop Ask Copilot wanneer de toepassing is onderbroken door de uitzondering.

    Schermopname van Ask Copilot knop in een exception.

    Als het venster nog niet is geopend, wordt het venster Copilot Chat weergegeven en wordt er een beoordeling gegeven van de fout en waarom deze is opgetreden. In dit voorbeeld identificeert Copilot een voorgestelde codeoplossing, een knop voor het kopiëren van code en een knop Voorbeeld voor de codeoplossing.

    Als u vragen hebt over de uitzondering, stelt u deze in het tekstvak Ask Copilot.

  2. Selecteer de knop Preview.

    Schermopname van de voorbeeldknop in het Copilot Chat-venster.

    Visual Studio toont een codevoorbeeld met de voorgestelde oplossing.

  3. Bekijk de voorgestelde oplossing en kies Accepteren om de codesuggesties toe te passen.

    Voorbeeld van code in Visual Studio.

  4. Start het foutopsporingsprogramma opnieuw.

    Deze keer treedt er geen uitzondering op. Het is opgelost!

Oplossen van agentische bugs met de debugger agent

De Foutopsporingsprogrammaagent biedt een end-to-end agentische werkstroom die fouten valideert tegen echt runtime-gedrag in plaats van te vertrouwen op statische analyse. De ervaring begeleidt u door een volledige agentische lus: het begrijpen en reproduceren van het probleem, het instrumenteren van de toepassing, het isoleren van de hoofdoorzaak en het valideren van de oplossing via live-uitvoering.

U kunt beginnen met een probleem in GitHub of Azure DevOps, of de fout in natuurlijke taal beschrijven. De Agent voor foutopsporing wijst het probleem toe aan uw lokale broncode en begeleidt u door de oplossing. U kunt tijdens het foutopsporingsproces communiceren met de agent om meer input te bieden, uw theorie te bespreken of de oplossing in realtime te verfijnen.

De Debugger Agent gebruiken:

  1. Open het venster Copilot Chat (View > GitHub Copilot Chat).
  2. Selecteer Foutopsporingsprogramma in de vervolgkeuzelijst Modus in de linkerbenedenhoek van het chatvenster.
  3. Geef een koppeling naar een GitHub of Azure DevOps probleem op of beschrijf de fout in natuurlijke taal.

Schermafbeelding van de agentkiezer met aangepaste agents in Visual Studio.

De Agent voor foutopsporing voert de volgende stappen uit:

  • Contextinjectie : verbindt het probleem of de beschrijving van de fout met uw lokale broncode.
  • Autonome reproduceerder : analyseert de fout en maakt, als reproductiestappen ontbreken, een minimaal scenario om de fout te activeren.
  • Hypothesen en instrumentatie : genereert fouthypotheses en instrumenten uw app met traceringen en voorwaardelijke onderbrekingspunten om runtimestatus vast te leggen.
  • Runtimevalidatie : voert de foutopsporingssessie uit en analyseert livetelemetrie om de hoofdoorzaak te isoleren.
  • Gerichte correctie : stelt een nauwkeurige oplossing voor op het exacte foutpunt in plaats van op brede herstructurering.
  • Definitieve menselijke validatie : u voert het scenario opnieuw uit en bevestigt de oplossing in de liveomgeving naast de agent.

Wanneer u zich in de agentmodus in de chat bevindt, kunt u ook overschakelen naar de agent voor foutopsporing met behulp van @debugger de chatinvoer. Zie Ingebouwde en aangepaste agents gebruiken met GitHub Copilot voor meer informatie over de Foutopsporingsagent en andere ingebouwde agents.

Verkrijg suggesties met voorwaardelijke onderbrekingspunten en tracepoints

Copilot geeft u suggesties voor conditionele onderbrekingspunten en tracepoints die specifiek zijn voor uw code.

In dit voorbeeld tonen we AI-suggesties voor een voorwaardelijk onderbrekingspunt. Voor tracepoints werkt de AI-hulp op dezelfde manier.

  1. Verwijder het huidige onderbrekingspunt door erop te klikken of met de rechtermuisknop te klikken en kies Onderbrekingspunt verwijderen.

  2. Vervang de volgende regel van code:

    names.Add("Major Major Major");
    

    hiermee:

    // names.Add("Major Major Major");
    foreach (var item in args)
    {
       names.Add("Name: " + item);
    }
    
  3. Klik met de rechtermuisknop in de marge links van de verklaring names.Add("Name: " + item) en kies Voorwaardelijk onderbrekingspunt invoegen.

  4. Selecteer het expressieveld en Copilot aan suggesties begint te werken.

    Screenshot van Copilot met suggesties voor voorwaardelijke breakpoints.

  1. Wanneer de suggesties worden weergegeven, kiest u er een, zoals item == "Test". Bewerk de suggestie zodat de naam Fredis.

    Schermopname van een Copilot suggestie voor een voorwaardelijk onderbrekingspunt.

  1. Wanneer de suggesties worden weergegeven, kiest u er een, zoals item == "John". Bewerk de suggestie zodat de naam Fredis.

    Schermopname van Copilot suggestie voor voorwaardelijk onderbrekingspunt.

  1. De voorwaardelijke expressie testen:

    1. Klik met de rechtermuisknop op het project ConsoleApp_Copilot in Solution Explorer en kies Properties.

    2. Selecteer Foutopsporing>Algemeen>Open de gebruikersinterface voor het starten van foutopsporingsprofielen.

    3. Voer in het veld opdrachtregelargumenten5 Fred Joein, op drie afzonderlijke regels.

      schermopname van het invoeren van opdrachtregelargumenten voor het project.

    4. Start het foutopsporingsprogramma opnieuw.

    Wanneer het foutopsporingsprogramma bij het onderbrekingspunt pauzeert, controleert u de waarde van item en verifieert u of de huidige waarde Fredis.