Concepten van de debuggeragent

De Debugger Agent is een AI-gestuurde assistent voor foutopsporing die via GitHub Copilot Chat werkt om je te helpen bugs te reproduceren, te isoleren en op te lossen door de uitvoering aan te sturen en het werk te verifiëren aan de hand van de live runtime-status. De agent is het krachtigst wanneer u het een duidelijk doel geeft en de foutopsporingswerkstroom end-to-end laat beheren.

De Foutopsporingsagent excelleert in scenario's waarin u een fout moet bewijzen, controleer of een oplossing werkt, instrumentcode met onderbrekingspunten en traceringspunten en analyseer complexe aanroepstacks. Door verzoeken in natuurlijke taal te combineren met debuggerbesturing kunt u efficiënter door reproduce-instrument-isolate-fix-workflows heen werken dan met alleen handmatig debuggen.

Toegang krijgen tot de Foutopsporingsprogramma-agent

  1. Open het venster Copilot Chat (GitHub-Copilot Chat>).

  2. Selecteer Debugger in het vervolgkeuzemenu Modus linksonder in het chatvenster, of typ @debugger in de chatinvoer terwijl u in de modus Agent bent.

  3. Voer een prompt in waarin de foutopsporingstaak wordt beschreven, waarbij u de tekst van de tijdelijke aanduiding vervangt door de details van uw scenario.

Reproductie en diagnose van fouten

De Foutopsporingsprogrammaagent kan fouten reproduceren uit beschrijvingen van problemen en bevestigen dat deze aanwezig zijn in uw runtime-omgeving. Begin door de agent te laten werken op een foutbeschrijving, een link naar een GitHub-issue of een Azure DevOps-bug, en laat hem de volledige cyclus doorlopen.

Voorbeeldprompts:

Investigate/fix/debug the bug described in <issue link>. Reproduce the failure, find the root cause with the debugger, and propose a fix.

When I <do these steps>, I expect <expected result> but instead I see <actual result>. Debug the problem, find where the code goes wrong, and suggest a fix.

Create a minimal repro for the following issue, then run it under the debugger to confirm the failure and show me the runtime state that causes it: <bug description>.

Verificatie en validatie herstellen

Zodra u een oplossing hebt, of die nu door de agent of door uzelf is gemaakt, gebruikt u de Debugger-agent om te verifiëren dat de oplossing het probleem oplost en dat alle belangrijke codepaden worden doorlopen.

Voorbeeldprompts:

Geef de agent een zelfstandige manier om te bewijzen dat de fix werkt met een eenheidstest of een kleine consolerepro en controleer vervolgens het specifieke runtimegedrag.

Set breakpoints at <specific locations>, debug, and verify that <variable> has the value <expected value> and that <behavior> happens as expected.

I'm working on a change to make my code handle <new feature>. As part of that, I broke the following scenario: <repro steps>. Debug the problem and find where my code went wrong. Here are my changes: <paste diff here>

Instrumentatie en inspectie tijdens uitvoeringstijd

Met de agent voor foutopsporing kunt u voorwaardelijke onderbrekingspunten en traceringspunten instellen, precies waar u ze nodig hebt. Voer vervolgens uw project uit om de gegevens te verzamelen die u nodig hebt. Deze benadering biedt u meer zichtbaarheid zonder uw code handmatig te bewerken.

Voorbeeldprompts:

Set a breakpoint at the start of ProcessFile that breaks only when the file name starts with "data12345", then launch my project.

I need more visibility into <area of code>. Add tracepoints that log <the values you care about> at the key points in this flow, then run my project and show me the trace output.

Aanroepstackanalyse en controlestroom

Wanneer u bij een onderbrekingspunt of uitzondering bent gestopt en inzicht wilt krijgen in het uitvoeringstraject, kan de Debugger-agent uw aanroepstack analyseren en uitleggen wat de actieve thread doet, inclusief de asynchrone uitvoeringsstroom.

Voorbeeldprompts:

Analyze the current call stack and explain what this thread is doing and how it got here, including the async flow. Point out the frame most likely responsible for <the problem>.

Why is my code taking the wrong branch and not reaching <this line>? Set a breakpoint there and run the app. If it isn't hit, set breakpoints at the upstream decision points and inspect the actual condition values to find where control flow diverges.

Tip

U kunt ook met één klik aanroepstackanalyse uitvoeren: selecteer in het venster AanroepstackAnalyseren met Copilot, of gebruik Analyseren met Copilot in de weergave Parallelle stacks / Threads voor scenario's met meerdere threads.

Foutopsporing voor eenheidstests

De Foutopsporingsprogrammaagent kan fouten opsporen in mislukte tests rechtstreeks vanuit de chat zonder dat u eerst het foutopsporingsprogramma hoeft te starten.

Voorbeeldprompt:

The test <TestName> is failing. Debug it, find the root cause of the failure, and suggest a fix.

Tip

U kunt ook beginnen met het opsporen van fouten in een mislukte test vanuit Test Explorer of de CodeLens-indicator boven de test in de editor en vervolgens verdergaan met het gesprek met de Agent voor foutopsporing. Dit is een eenvoudige manier om de context van de mislukte test aan Copilot te geven.

Aanbevolen procedures voor de foutopsporingsprogrammaagent

  • Geef gegevens op, geen opdrachten. De foutopsporingsagent heeft geen toegang tot de shell of PowerShell, dus kan deze geen hulpprogramma's zoals git.exe voor u uitvoeren. Plak in plaats daarvan de werkelijke uitvoer. Plak bijvoorbeeld de tekst van een diff in plaats van de agent te vertellen een diff-opdracht uit te voeren.

  • Laat de agent de uitvoering aansturen wanneer deze code instrumenteert. Copilot kan fouten in voorwaardelijke breekpunten en traceerpunten alleen corrigeren wanneer Copilot de uitvoering aanstuurt. Geef de voorkeur aan 'een voorwaardelijk onderbrekingspunt instellen ... en mijn project uitvoeren' boven alleen 'een voorwaardelijk onderbrekingspunt instellen'.

  • Laat de agent afronden wanneer deze de pauzestatus ingaat. Als de agent de uitvoering beheert en in de chat nog steeds wordt weergegeven dat Copilot bezig is, hoeft u niets te doen. Als u de besturing wilt overnemen, selecteert u de stopknop in de chat.