Debugger-Agent-Konzepte

Der Debugger-Agent ist ein KI-basierter Debugging-Assistent, der über GitHub-Copilot Chat funktioniert, um Fehler zu reproduzieren, zu isolieren und zu beheben, indem Sie die Ausführung steuern und Arbeit im Live-Laufzeitzustand überprüfen. Der Agent ist am leistungsfähigsten, wenn Sie ihm ein klares Ziel geben und es ihm ermöglichen, den Debugworkflow end-to-End zu verwalten.

Der Debugger-Agent eignet sich besonders für Szenarien, in denen Sie nachweisen müssen, dass ein Fehler vorliegt, überprüfen, ob eine Fehlerbehebung funktioniert, Code mit Haltepunkten und Tracepoints instrumentieren und komplexe Aufrufstapel analysieren. Durch die Kombination von Anfragen in natürlicher Sprache mit der Debuggersteuerung können Sie Reproduzieren-Instrumentieren-Isolieren-Beheben-Workflows effizienter durchlaufen als allein mit manuellem Debugging.

So greifen Sie auf den Debugger-Agent zu

  1. Öffnen Sie das Copilot Chat-Fenster (Ansicht>GitHub Copilot Chat).

  2. Wählen Sie Debugger im Modus-Dropdown-Menü in der unteren linken Ecke des Chatfensters aus, oder geben Sie @debugger im Chat-Eingabefeld ein, während Sie sich im Agentmodus befinden.

  3. Geben Sie eine Eingabeaufforderung ein, die Ihre Debugaufgabe beschreibt, und ersetzen Sie Platzhaltertext durch die Besonderheiten Ihres Szenarios.

Fehlerreproduktion und -diagnose

Der Debugger-Agent kann Fehler aus Problembeschreibungen reproduzieren und bestätigen, dass sie in Ihrer Laufzeitumgebung vorhanden sind. Geben Sie dem Agenten zunächst eine Fehlerbeschreibung, einen Link zu einem GitHub-Issue oder einen Azure-DevOps-Fehler, und lassen Sie ihn den gesamten Ablauf übernehmen.

Beispielaufforderungen:

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>.

Verifizierung und Validierung korrigieren

Sobald Sie eine Lösung haben, unabhängig davon, ob sie vom Agenten oder von Ihnen erstellt wurde, verwenden Sie den Debugger-Agenten, um zu überprüfen, dass die Lösung das Problem behebt und alle wichtigen Codepfade abgedeckt werden.

Beispielaufforderungen:

Geben Sie dem Agenten eine Möglichkeit, eigenständig nachzuweisen, dass der Fix funktioniert – etwa durch einen Unittest oder eine kleine Konsolenreproduktion – und lassen Sie ihn dann ein bestimmtes Laufzeitverhalten verifizieren.

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>

Instrumentierung und Laufzeitinspektion

Der Debugger-Agent kann bedingte Haltepunkte und Ablaufverfolgungspunkte genau dort festlegen, wo Sie sie benötigen, und dann Ihr Projekt ausführen, um die benötigten Daten zu sammeln. Mit diesem Ansatz erhalten Sie mehr Sichtbarkeit, ohne den Code manuell zu bearbeiten.

Beispielaufforderungen:

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.

Anrufstapelanalyse und Steuerungsfluss

Wenn Sie an einem Haltepunkt oder einer Ausnahme angehalten werden und den Ausführungspfad verstehen müssen, kann der Debugger-Agent Ihren Aufrufstapel analysieren und erklären, was der aktuelle Thread ausführt, einschließlich asynchronem Fluss.

Beispielaufforderungen:

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

Sie können auch die Anrufstapelanalyse mit einem Klick abrufen: Wählen Sie im Fenster "Anrufstapel" die Option "Analysieren mit Copilot" aus, oder verwenden Sie "Analysieren mit Copilot" in der Ansicht "Parallel Stacks / Threads" für Multithread-Szenarien.

Debugging von Unit-Tests

Der Debugger-Agent kann fehlerhafte Tests direkt aus dem Chat debuggen, ohne dass Sie zuerst den Debugger starten müssen.

Beispiel-Prompt:

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

Tip

Sie können auch mit dem Debuggen eines fehlerhaften Tests über dem Test-Explorer oder dem CodeLens-Indikator über dem Test im Editor beginnen und dann die Unterhaltung mit dem Debugger-Agent von dort aus fortsetzen. Dies ist eine einfache Möglichkeit, den Kontext des Fehlerhaften Tests an Copilot zu übergeben.

Bewährte Methoden für den Debugger-Agent

  • Geben Sie Daten und keine Befehle an. Der Debugger-Agent verfügt nicht über Shell- oder PowerShell-Zugriff, sodass tools wie git.exe für Sie nicht ausgeführt werden können. Fügen Sie stattdessen die tatsächliche Ausgabe ein. Fügen Sie z. B. den Text eines Diffs ein, anstatt dem Agent mitzuteilen, einen Diff-Befehl auszuführen.

  • Lassen Sie den Agenten die Ausführung steuern, wenn er Code instrumentiert. Copilot kann Fehler in bedingten Haltepunkten und Ablaufverfolgungspunkten nur korrigieren, wenn es die Ausführung steuert. Verwenden Sie lieber „einen bedingten Haltepunkt festlegen … und mein Projekt ausführen“ statt nur „einen bedingten Haltepunkt festlegen“.

  • Lassen Sie den Agenten bis zum Ende laufen, wenn er in den Unterbrechungszustand wechselt. Wenn der Agent die Ausführung steuert und im Chat weiterhin angezeigt wird, dass Copilot arbeitet, müssen Sie nichts tun. Um die Steuerung zurückzunehmen, wählen Sie die Schaltfläche "Beenden " im Chat aus.