Conceitos do Agente Depurador

O Debugger Agent é um assistente de depuração alimentado por IA que funciona através do GitHub Copilot Chat para o ajudar a reproduzir, isolar e corrigir bugs, controlando a execução e validando o trabalho em relação ao estado de execução em tempo real. O agente é mais poderoso quando lhe dás um objetivo claro e o deixas gerir o fluxo de depuração de ponta a ponta.

O Debugger Agent destaca-se em cenários onde é necessário provar que existe um bug, verificar se uma correção funciona, instrumentar código com pontos de interrupção e tracepoints, e analisar pilhas de chamadas complexas. Ao combinar pedidos em linguagem natural com o controlo do depurador, pode percorrer fluxos de trabalho de reproduzir-instrumentar-isolar-corrigir de forma mais eficiente do que apenas com a depuração manual.

Como aceder ao Agente Depurador

  1. Abra a janela do Copilot Chat (Ver>GitHub Copilot Chat).

  2. Selecione Depurador na lista pendente de modo no canto inferior esquerdo da janela de chat, ou introduza @debugger no campo de introdução do chat quando estiver no modo Agente.

  3. Introduza uma instrução que descreva a sua tarefa de depuração, substituindo o texto de marcador pelos detalhes específicos do seu cenário.

Reprodução e diagnóstico de erros

O Agente Depurador pode reproduzir bugs a partir das descrições dos problemas e confirmar que existem no seu ambiente de execução. Começa por apontar o agente para uma descrição de bug, um link de issue do GitHub ou um bug do Azure DevOps, e deixa que ele gere o ciclo completo.

Exemplos de prompts:

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

Verificação e validação de correções

Depois de ter uma correção, seja criada pelo agente ou por si, use o Agente Depurador para verificar se a correção resolve o problema e que todos os caminhos de código significativos foram exercidos.

Exemplos de prompts:

Dê ao agente uma forma autossuficiente de provar que a correção funciona, por exemplo, através de um teste unitário ou de um pequeno caso de reprodução na consola, e depois peça-lhe que verifique um comportamento específico em tempo de execução.

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>

Instrumentação e inspeção em tempo de execução

O Agente Depurador pode definir pontos de interrupção condicionais e pontos de rastreamento exatamente onde precisar, e depois executar o seu projeto para recolher os dados necessários. Esta abordagem dá-lhe mais visibilidade sem precisar de editar manualmente o seu código.

Exemplos de prompts:

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.

Análise da pilha de chamadas e fluxo de controlo

Quando está em pausa num ponto de interrupção ou numa exceção e precisa de compreender o fluxo de execução, o Agente de Depuração pode analisar a sua pilha de chamadas e explicar o que está a fazer a thread atual, incluindo o fluxo assíncrono.

Exemplos de prompts:

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.

Sugestão

Também pode obter a análise da pilha de chamadas com um clique: na janela Call Stack, selecione Analyze with Copilot ou utilize Analyze with Copilot na vista Parallel Stacks / Threads para cenários com múltiplos threads.

Depuração de testes unitários

O Debugger Agent pode depurar testes falhados diretamente a partir do chat, sem que seja necessário iniciar primeiro o depurador.

Pedido de exemplo:

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

Sugestão

Também pode começar a depurar um teste falhado pelo Test Explorer ou pelo indicador CodeLens acima do teste no editor, e depois continuar a conversa com o Debugger Agent a partir daí. Esta é uma forma fácil de passar o contexto do teste falhado ao Copilot.

Boas práticas para o Agente Depurador

  • Fornece dados, não comandos. O Debugger Agent não tem acesso a shell ou PowerShell, por isso não pode executar ferramentas como git.exe para ti. Em vez disso, cola a saída real. Por exemplo, cole o texto de um diff em vez de dizer ao agente para executar o comando diff.

  • Permita que o agente controle a execução ao instrumentar o código. O Copilot só pode corrigir erros em pontos de paragem condicionais e pontos de rastreamento quando está a conduzir a corrida. Prefere "definir um ponto de interrupção condicional ... e executar o meu projeto" a "definir um ponto de interrupção condicional" por si só.

  • Deixe o agente terminar quando este entrar no estado de pausa. Se o agente estiver a controlar a execução e o chat ainda mostrar o Copilot a funcionar, não precisas de fazer nada. Para recuperar o controlo, selecione o botão de parar no chat.