Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste artigo, você aprenderá a depurar com mais eficiência usando GitHub Copilot. Copilot pode fornecer correções de código, juntamente com análises detalhadas e explicações sobre como o código funciona. Ele ajuda com correções propostas para bugs e explica itens como exceções. Copilot entende pilhas de chamadas, quadros, nomes de variáveis e valores. Como resultado, você pode interagir com a IA com reconhecimento de depurador para fazer perguntas detalhadas relacionadas ao seu código e a problemas de depuração em geral.
Além disso, o Copilot fornece ajuda mais precisa para alguns cenários direcionados, como Exceções, e todos os descritos nos cenários aprimorados por IA para depuração. Na maioria desses cenários, procure o Ask Copilot
ou botão Analisar com o Copilot. Nesses cenários, Copilot já conhece o contexto de suas perguntas.
Para obter mais informações sobre as conclusões do GitHub Copilot no Visual Studio, consulte Sobre as Conclusões do GitHub Copilot no Visual Studio.
Pré-requisitos
Para começar, você precisa:
Visual Studio 2022 version 17.8 ou posterior
Faça login no Visual Studio usando uma conta do GitHub com acesso ao Copilot
** Você pode usar GitHub Copilot gratuitamente. Inscreva-se e aproveite a IA para codificar com mais rapidez e eficiência.Observação
Se você tiver problemas de autenticação após instalar a extensão, consulte Troubleshooting authentication issues with GitHub Copilot Chat.
Cenários aprimorados para IA
Copilot entende pilhas de chamadas, quadros, nomes de variáveis e valores. Como resultado, você pode interagir com a IA com reconhecimento de depurador para fazer perguntas detalhadas relacionadas ao seu código e a problemas de depuração em geral.
Além disso, Copilot fornece ajuda mais precisa para alguns cenários específicos, como aqueles descritos na tabela abaixo.
| Recurso ou cenário | Ligação |
|---|---|
| Agente do Depurador | Consulte Resolução de bugs com agentes usando o Agente Depurador neste artigo. Fluxo de trabalho completo com agentes que reproduz bugs, instrumenta seu aplicativo e valida correções usando dados de tempo de execução em tempo real. |
| Análise da pilha de chamadas | Consulte Analisar a pilha de chamadas com o Copilot. Obtenha, com um clique, uma análise do que seu thread está fazendo, incluindo explicações do fluxo assíncrono. |
| Exceções | Confira Depurar uma exceção com o Copilot neste artigo. A ajuda com exceções inclui auxílio na detecção de erros de deadlock. |
| Variáveis | Consulte Obter assistência de IA. |
| Análise de consulta LINQ | Passe o mouse sobre as consultas LINQ durante a depuração no editor de código para ver o valor retornado. Selecione o botão Analyze com Copilot para obter assistência de IA. Veja Exibir valores retornados de consultas LINQ. |
| Dicas de dados | Consulte Obter assistência de IA com dicas de dados. |
| Pontos de interrupção condicionais e pontos de rastreamento | Confira Obter sugestões com pontos de interrupção condicionais e pontos de rastreamento neste artigo. |
| Ações Rápidas (lâmpada) | Consulte Obter assistência de IA com ações rápidas. |
| Visualizador tabular IEnumerable | Consulte Obter assistência de IA. |
| Detectar e formatar automaticamente no Visualizador de Texto | Veja a detecção automática e o formato. O Copilot identifica automaticamente cadeias de caracteres codificadas ou compactadas e as decodifica em um único clique. |
| Valores retornados embutidos | Confira Exibir resultados retornados de chamadas de método. |
| Valores embutidos | Consulte Visualizar valores embutidos. |
| Depuração multithread | Consulte Obtenha assistência de IA com a visualização Threads. |
| Teste de unidade | Veja Obter assistência de IA para depurar testes |
| Inspecionar exceções com contexto de repositório | Veja como obter assistência de IA utilizando o contexto do repositório |
| Solução de problemas de pontos de interrupção | Consulte Obter assistência de IA. |
| Recurso ou cenário | Ligação |
|---|---|
| Análise da pilha de chamadas | Consulte Analisar a pilha de chamadas com o Copilot. Obtenha, com um clique, uma análise do que seu thread está fazendo, incluindo explicações do fluxo assíncrono. |
| Exceções | Confira Depurar uma exceção com o Copilot neste artigo. A ajuda com exceções inclui auxílio na detecção de erros de deadlock. |
| Variáveis | Consulte Obter assistência de IA. |
| Análise de consulta LINQ | Passe o mouse sobre as consultas LINQ durante a depuração no editor de código para ver o valor retornado. Selecione o botão Analyze com Copilot para obter assistência de IA. Veja Exibir valores retornados de consultas LINQ. |
| Dicas de dados | Consulte Obter assistência de IA com dicas de dados. |
| Pontos de interrupção condicionais e pontos de rastreamento | Confira Obter sugestões com pontos de interrupção condicionais e pontos de rastreamento neste artigo. |
| Ações Rápidas (lâmpada) | Consulte Obter assistência de IA com ações rápidas. |
| Visualizador tabular IEnumerable | Consulte Obter assistência de IA. |
| Valores retornados embutidos | Confira Exibir resultados retornados de chamadas de método. |
| Valores embutidos | Consulte Visualizar valores embutidos. |
| Depuração multithread | Consulte Obtenha assistência de IA com a visualização Threads. |
| Teste de unidade | Veja Obter assistência de IA para depurar testes |
| Inspecionar exceções com contexto de repositório | Veja como obter assistência de IA utilizando o contexto do repositório |
| Solução de problemas de pontos de interrupção | Consulte Obter assistência de IA. |
Na maioria desses cenários, você recebe assistência direcionada usando o Ask Copilot
ou o botão Analyze with Copilot. Copilot já conhece o contexto de suas perguntas. Por exemplo, ele sabe a pilha de chamadas atual, a linha de código da qual você está falando e o nome da exceção (se ocorreu), portanto, você não precisa fornecer contexto no chat. Copilot também fornece sugestões para o uso de pontos de interrupção condicionais e pontos de rastreamento.
Depurar usando o Copilot
O exemplo simples a seguir mostra como obter assistência de IA usando o modo de exibição de Chat embutido.
Observação
Você também pode obter ajuda usando a janela de Chat separada selecionando View > GitHub Copilot Chat. Para obter mais informações, consulte O que é a extensão de Copilot Chat do GitHub para Visual Studio?.
Iniciar uma sessão de depuração
Em Visual Studio, crie um novo aplicativo do Console C#.
Na janela inicial, escolha Criar um novo projeto. Digite console na caixa de pesquisa, selecione C# como o idioma e escolha Console App para .NET. Escolha Avançar. Digite um nome de projeto como ConsoleApp_Copilot e selecione Próximo.
Escolha a estrutura de destino recomendada ou .NET 10 e escolha Create.
Se você não vir o modelo de projeto Console App para .NET, vá para Tools>Get Tools and Features, que abre o instalador de Visual Studio. Escolha a carga de trabalho .NET desktop development, e em seguida, escolha Modificar.
Visual Studio cria o projeto de console, que aparece em Solution Explorer no painel direito.
Substitua o código em Program.cs pelo seguinte código:
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"); } }Clique com o botão direito do mouse na instrução a seguir e escolha Ponto de Interrupção>Inserir Ponto de Interrupção.
int value = Int32.Parse(args[0]);Pressione F5 ou selecione Iniciar Depuração no menu Depurar.
O aplicativo pausa no ponto de interrupção. A janela Autos mostra que a variável args tem um valor de
string[0].
- Clique com o botão direito do mouse no código e escolha Chat para abrir o modo de exibição de Chat embutido.
- Clique com o botão direito do mouse no código e escolha Ask Copilot para abrir o modo de exibição de Chat embutido.
Dica
Como alternativa, você pode clicar com o botão direito do mouse em uma variável na janela Autos ou Locais, ou em uma dica de dados, e escolher Perguntar ao Copilot. Isso fornece ao Copilot o nome e o contexto da variável, portanto, não é necessário fornecer o contexto você mesmo no chat.
Digite a seguinte pergunta no modo de exibição de Chat embutido:
Why does the args variable have a value of string[0]?
Quando você pressiona Enter, Copilot fornece uma resposta com base na compreensão do código. (Você pode obter uma resposta diferente do que é mostrado aqui.)
Se Copilot tiver uma correção sugerida para seu código, ela mostrará a você. Caso contrário, você pode pedir a Copilot uma sugestão de código.
Dica
No chat embutido, use o símbolo "#" e selecione na lista suspensa para fornecer ao Copilot informações específicas, que você referencia em sua pergunta. Por exemplo, se você selecionar uma parte do código e digitar #, poderá escolher essa seleção na lista suspensa denominada #. Você também pode usar o símbolo "#" para fazer referência aos recursos do IDE que aparecem na lista suspensa, como a janela 'Locais'.
Neste exemplo, role até o final da resposta do Copilot e selecione a pergunta de acompanhamento no final da janela de chat embutida: "Como lidar com o caso quando nenhum argumento é passado para o programa?"
Copilot mostra uma correção sugerida no código.
Se você quiser aplicar a correção de código, selecione Tab.
Selecione Alt+Delete para que possamos continuar aprendendo outros recursos de Copilot na próxima seção.
Quando você pressiona Enter, Copilot fornece uma resposta com base na compreensão do código. (Você pode obter uma resposta diferente do que é mostrado aqui.)
Se Copilot tiver uma correção sugerida para seu código, ela mostrará a você. Caso contrário, você pode pedir a Copilot uma sugestão de código.
Dica
No chat embutido, use o símbolo "#" e selecione na lista suspensa para fornecer ao Copilot informações específicas, que você referencia em sua pergunta. Por exemplo, se você selecionar uma parte do código e digitar #, poderá escolher essa seleção na lista suspensa denominada #. Você também pode usar o símbolo "#" para fazer referência aos recursos do IDE que aparecem na lista suspensa, como a janela 'Locais'.
Neste exemplo, role até o final da resposta do Copilot e selecione a pergunta de acompanhamento no final da janela de chat embutida: "Como lidar com o caso quando nenhum argumento é passado para o programa?"
Copilot mostra uma correção sugerida no código.
Se você quiser aplicar a correção de código, escolha Aceitar.
Escolha Cancel para que possamos continuar aprendendo outros recursos de Copilot na próxima seção.
Depurar uma exceção com Copilot
O exemplo simples a seguir mostra como obter assistência de IA quando você encontra uma exceção e como atualizar rapidamente seu código com base em correções sugeridas por IA.
Iniciar uma sessão de depuração
Enquanto estiver pausado no depurador usando o mesmo aplicativo de exemplo, pressione a tecla F11 ou Depurar>Intervir para executar a instrução atual do programa.
Um
IndexOutOfRangeExceptionocorre e o aplicativo pausa, mostrando a exceção.Para obter assistência de IA para a exceção, prossiga para a próxima seção.
Solicitar assistência de IA
Com o aplicativo pausado na exceção, selecione o botão Analyze com Copilot.
Se ainda não estiver aberta, a janela Copilot Chat será exibida e fornecerá uma avaliação do erro e por que ocorreu. Neste exemplo, Copilot identifica uma correção de código sugerida, um botão para copiar código e um botão Preview para a correção de código.
Se você tiver dúvidas sobre a exceção, faça-as na caixa de texto Ask Copilot.
Na janela de chat Copilot, informe Copilot que você deseja que ele impeça o erro.
Quando Copilot sugerir uma correção na janela de chat, selecione Apply.
Examine a correção sugerida e selecione Tab para aplicar a sugestão de código.
Reinicie o depurador.
Desta vez, nenhuma exceção ocorre. Foi corrigido!
Com o aplicativo pausado na exceção, selecione o botão Ask Copilot.
Se ainda não estiver aberta, a janela Copilot Chat será exibida e fornecerá uma avaliação do erro e por que ocorreu. Neste exemplo, Copilot identifica uma correção de código sugerida, um botão para copiar código e um botão Preview para a correção de código.
Se você tiver dúvidas sobre a exceção, faça-as na caixa de texto Ask Copilot.
Selecione o botão Versão prévia.
Visual Studio mostra uma visualização de código com a correção sugerida.
Examine a correção sugerida e escolha Aceitar para aplicar a sugestão de código.
Reinicie o depurador.
Desta vez, nenhuma exceção ocorre. Foi corrigido!
Resolução de bugs por agentes com o Agente Depurador
O Agente Depurador fornece um fluxo de trabalho de agente completo que valida bugs com base no comportamento real em tempo de execução, em vez de depender de análises estáticas. A experiência guia você por um ciclo de agente completo: compreensão e reprodução do problema, instrumentação do aplicativo, isolamento da causa raiz e validação da correção por meio de execução ao vivo.
Você pode começar com um problema em GitHub ou Azure DevOps ou descrever o bug em linguagem natural. O Agente do Depurador mapeia o problema ao seu código-fonte local e guia você na resolução. Você pode interagir com o agente durante o processo de depuração para fornecer mais entrada, discutir sua teoria ou refinar a correção em tempo real.
Para usar o Agente de Depurador:
- Abra a janela Copilot Chat (View > GitHub Copilot Chat).
- Selecione Depurador na lista suspensa do modo no canto inferior esquerdo da janela de chat.
- Forneça um link para o problema no GitHub ou Azure DevOps, ou descreva-o em linguagem natural.
O Agente de Depurador funciona pelas seguintes etapas:
- Injeção de contexto – conecta o problema ou a descrição do bug ao código-fonte local.
- Reprodutor autônomo – Analisa o bug e, se as etapas de reprodução estiverem ausentes, criará um cenário mínimo para disparar a falha.
- Hipótese e instrumentação – gera hipóteses de falha e instrumenta seu aplicativo com pontos de rastreamento e pontos de interrupção condicionais para capturar o estado de runtime.
- Runtime validation – Executa a sessão de depuração e analisa a telemetria ao vivo para isolar a causa raiz.
- Correção direcionada – sugere uma correção precisa no ponto de falha exato em vez de uma refatoração ampla.
- Validação humana final – você executa novamente o cenário e confirma a correção no ambiente ao vivo ao lado do agente.
Quando estiver no modo Agente no chat, você também pode alternar para o agente Depurador usando @debugger na entrada do chat. Para obter mais informações sobre o Agente Depurador e outros agentes integrados, consulte Usar agentes integrados e personalizados com o GitHub Copilot.
Receba sugestões com pontos de interrupção condicionais e pontos de rastreamento
Copilot oferece sugestões para pontos de interrupção condicionais e pontos de rastreamento específicos para o seu código.
Neste exemplo, mostramos sugestões de IA para um ponto de interrupção condicional. Para pontos de rastreamento, a assistência de IA funciona da mesma maneira.
Remova o ponto de interrupção atual clicando nele ou clicando com o botão direito do mouse e escolha Excluir ponto de interrupção.
Substitua a seguinte linha de código:
names.Add("Major Major Major");por este:
// names.Add("Major Major Major"); foreach (var item in args) { names.Add("Name: " + item); }À esquerda da instrução
names.Add("Name: " + item), clique com o botão direito do mouse na margem e escolha Inserir Ponto de Interrupção Condicional.Selecione o campo de expressão e Copilot começa a trabalhar em sugestões.
Quando as sugestões aparecerem, escolha uma, como
item == "Test". Edite a sugestão para que o nome sejaFred.
Quando as sugestões aparecerem, escolha uma, como
item == "John". Edite a sugestão para que o nome sejaFred.
Para testar a expressão condicional:
Clique com o botão direito do mouse no projeto ConsoleApp_Copilot no Solution Explorer e escolha Properties.
Selecione Depurar>Geral>Abrir interface de perfis de início de depuração.
No campo Argumentos de linha de comando, insira
5 Fred Joe, em três linhas separadas.
Reinicie o depurador.
Quando o depurador pausar no ponto de interrupção, verifique o valor de
iteme confirme se o valor atual éFred.