Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste artigo, vais aprender a depurar de forma mais eficiente usando o GitHub Copilot. O Copilot pode fornecer correções de código juntamente com análises aprofundadas e explicações sobre como o código funciona. Ele ajuda com correções propostas para bugs e explica coisas como exceções. O Copilot compreende pilhas de chamadas, quadros, nomes de variáveis e valores. Como resultado, podes interagir com uma IA ciente do depurador para fazer perguntas detalhadas relacionadas ao teu código e a questões de depuração em geral.
Além disso, Copilot fornece ajuda mais precisa para alguns cenários direcionados, como Exceções, e todos os descritos em cenários IA para depuração. Na maioria destes cenários, procure o botão Ask Copilot
ou o botão Analisar com Copilot. Nestes cenários, o Copilot já conhece o contexto das suas perguntas.
Para mais informações sobre GitHub Copilot Completions in Visual Studio, consulte About GitHub Copilot Completions in Visual Studio.
Pré-requisitos
Para começar, você precisa:
Visual Studio 2022 versão 17.8 ou posterior
Iniciar sessão no Visual Studio usando uma conta do GitHub com acesso ao Copilot
** Pode usar GitHub Copilot gratuitamente. Inscreva-se e aproveite a IA para codificar de forma mais rápida e eficiente.Observação
Se tiver problemas de autenticação após instalar a extensão, consulte Resolução de problemas de autenticação com o GitHub Copilot Chat.
Cenários aprimorados por IA
O Copilot compreende pilhas de chamadas, quadros, nomes de variáveis e valores. Como resultado, podes interagir com uma IA ciente do depurador para fazer perguntas detalhadas relacionadas ao teu código e a questões de depuração em geral.
Além disso, o Copilot fornece apoio mais preciso para alguns cenários específicos, como os descritos na tabela seguinte.
| Recurso ou cenário | Ligação |
|---|---|
| Agente Depurador | Consulte resolução de bugs Agentic com o Debugger Agent neste artigo. Fluxo de trabalho agente de ponta a ponta que reproduz bugs, instrumenta a sua aplicação e valida correções usando dados de execução em tempo real. |
| Análise da pilha de chamadas | Ver Analisar a pilha de chamadas com Copilot. Obtenha uma análise com um clique do que o seu tópico está a fazer, incluindo explicações de fluxo assíncrono. |
| Exceções | Veja Debug uma exceção com Copilot neste artigo. Ajuda com exceções inclui ajuda com erros de deteção de impasse. |
| Variáveis | Consulte Obter assistência para IA. |
| Análise de consulta LINQ | Passe o cursor sobre as consultas LINQ durante a depuração no editor de código para ver o valor de retorno. Selecione o botão Analisar com Copilot para assistência à IA. Consulte Exibir valores de retorno de consultas LINQ. |
| Dicas de dados | Consulte Obtenha assistência de IA com dicas de dados. |
| Pontos de interrupção condicionais e pontos de rastreio | Consulte as 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 para IA. |
| Deteção automática e formatação no Visualizador de Texto | Veja Auto-deteção e formatação. O Copilot identifica automaticamente as cadeias codificadas ou comprimidas e decodifica-as com um único clique. |
| Valores de retorno em linha | Consulte Ver os valores de retorno das chamadas de método. |
| Valores em linha | Consulte Exibir valores embutidos. |
| Depuração multithreaded | Consulte Obter assistência de IA com a visualização Threads. |
| Teste de unidades | Veja Obter assistência de IA para depurar testes |
| Inspecionar exceções com contexto de repositório | Consulte Obter assistência de IA com contexto de repositório |
| Solução de problemas de pontos de interrupção | Consulte Obter assistência para IA. |
| Recurso ou cenário | Ligação |
|---|---|
| Análise da pilha de chamadas | Ver Analisar a pilha de chamadas com Copilot. Obtenha uma análise com um clique do que o seu tópico está a fazer, incluindo explicações de fluxo assíncrono. |
| Exceções | Veja Debug uma exceção com Copilot neste artigo. Ajuda com exceções inclui ajuda com erros de deteção de impasse. |
| Variáveis | Consulte Obter assistência para IA. |
| Análise de consulta LINQ | Passe o cursor sobre as consultas LINQ durante a depuração no editor de código para ver o valor de retorno. Selecione o botão Analisar com Copilot para assistência à IA. Consulte Exibir valores de retorno de consultas LINQ. |
| Dicas de dados | Consulte Obtenha assistência de IA com dicas de dados. |
| Pontos de interrupção condicionais e pontos de rastreio | Consulte as 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 para IA. |
| Valores de retorno em linha | Consulte Ver os valores de retorno das chamadas de método. |
| Valores em linha | Consulte Exibir valores embutidos. |
| Depuração multithreaded | Consulte Obter assistência de IA com a visualização Threads. |
| Teste de unidades | Veja Obter assistência de IA para depurar testes |
| Inspecionar exceções com contexto de repositório | Consulte Obter assistência de IA com contexto de repositório |
| Solução de problemas de pontos de interrupção | Consulte Obter assistência para IA. |
Na maioria destes cenários, obtém assistência direcionada usando o botão Ask Copilot
ou Analisar com Copilot. O Copilot já conhece o contexto das tuas perguntas. Por exemplo, ele conhece a pilha de chamadas atual, a linha de código sobre a qual você está perguntando e o nome da exceção (se houver), portanto, você não precisa fornecer contexto no bate-papo. O Copilot também fornece sugestões para o uso de pontos de paragem condicionais e pontos de rastreamento.
Depuração usando Copilot
O exemplo simples a seguir mostra como obter assistência de IA usando a visualização de bate-papo embutida.
Observação
Também pode obter ajuda usando a janela de chat separada selecionando View > GitHub Copilot Chat. Para mais informações, veja Qual é a extensão GitHub Copilot Chat para Visual Studio?.
Iniciar uma sessão de depuração
No Visual Studio, crie uma nova aplicação de consola C#.
Na janela Iniciar, escolha Criar um novo projeto. Escreve consola na caixa de pesquisa, seleciona C# como língua e depois escolhe Console App para .NET. Escolha Próximo. Digite um nome de projeto como ConsoleApp_Copilot e selecione Avançar.
Escolha o framework alvo recomendado ou .NET 10, e depois escolha Create.
Se não vires o modelo de projeto Console App para .NET, vai a Tools>Get Tools and Features, que abre o Visual Studio Instalador. Escolha a carga de trabalho desenvolvimento .NET, depois escolha Modificar.
Visual Studio cria o projeto de consola, que aparece em Solution Explorer no painel direito.
Substitua o código no 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 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 Depuração.
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 no código e escolha Chat para abrir a vista de Chat inline.
- Clique com o botão direito no código e escolha Ask Copilot para abrir a vista de chat inline.
Dica
Em alternativa, pode clicar com o botão direito numa variável na janela Autos ou Locais, ou numa dica de dados, e escolher Ask Copilot. Isto fornece ao Copilot o nome da variável e o contexto, por isso não precisas de fornecer contexto tu próprio no chat.
Digite a seguinte pergunta no modo de exibição Chat embutido:
Why does the args variable have a value of string[0]?
Quando carregas em Enter, Copilot fornece uma resposta baseada na compreensão do teu código. (Você pode receber uma resposta diferente da mostrada aqui.)
Se o Copilot sugerir uma solução para o teu código, mostra-te. Se não, podes pedir ao Copilot uma sugestão de código.
Dica
No Chat inline, utilize o símbolo "#" e selecione na lista suspensa para passar informações específicas ao Copilot enquanto as referencia na sua pergunta. Por exemplo, se selecionares uma parte do código e, em seguida, escreveres #, podes escolher essa seleção na lista suspensa #. Você também pode usar o símbolo "#" para referenciar funcionalidades do IDE que aparecem na lista suspensa, como a janela "Locais".
Neste exemplo, desloce-se até ao final da resposta do Copilot e selecione a pergunta de seguimento no final da janela do Chat inline, "Como posso lidar com o caso quando não são transmitidos argumentos ao programa?"
O Copilot mostra uma solução sugerida para o seu código.
Se quiseres aplicar a correção do código, seleciona Tab.
Selecione Alt+Delete para podermos continuar a aprender outras funcionalidades do Copilot na secção seguinte.
Quando carregas em Enter, Copilot fornece uma resposta baseada na compreensão do teu código. (Você pode receber uma resposta diferente da mostrada aqui.)
Se o Copilot sugerir uma solução para o teu código, mostra-te. Se não, podes pedir ao Copilot uma sugestão de código.
Dica
No Chat inline, utilize o símbolo "#" e selecione na lista suspensa para passar informações específicas ao Copilot enquanto as referencia na sua pergunta. Por exemplo, se selecionares uma parte do código e, em seguida, escreveres #, podes escolher essa seleção na lista suspensa #. Você também pode usar o símbolo "#" para referenciar funcionalidades do IDE que aparecem na lista suspensa, como a janela "Locais".
Neste exemplo, desloce-se até ao final da resposta do Copilot e selecione a pergunta de seguimento no final da janela do Chat inline, "Como posso lidar com o caso quando não são transmitidos argumentos ao programa?"
O Copilot mostra uma solução sugerida para o seu código.
Se quiser aplicar a correção de código, escolha Aceitar.
Escolha Cancelar para podermos continuar a aprender outras funcionalidades de Copilot na secção seguinte.
Depurar uma exceção com o Copilot
O exemplo simples a seguir mostra como obter assistência de IA quando você encontrar 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
Quando pausado no depurador usando a mesma aplicação de exemplo, pressione F11 ou Debug>Step Into para executar a instrução atual.
Ocorre um
IndexOutOfRangeExceptione a aplicação pausa, mostrando a exceção.Para obter assistência de IA para a exceção, siga para a secção seguinte.
Peça ajuda para IA
Com a aplicação pausada na exceção, selecione o botão Analisar com Copilot.
Se ainda não estiver aberta, a janela do Copilot Chat aparece e fornece uma avaliação do erro e do motivo pelo qual ocorreu. Neste exemplo, Copilot identifica uma correção de código sugerida, um botão para copiar código e um botão Pré-visualização para a correção de código.
Se tiver dúvidas sobre a exceção, pergunte-as na caixa de texto Ask Copilot.
Na janela de chat do Copilot, diz ao Copilot que queres que ele evite o erro.
Quando Copilot sugerir uma solução na janela de chat, selecione Aplicar.
Revise 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 a aplicação pausada na exceção, selecione o botão Ask Copilot.
Se ainda não estiver aberta, a janela do Copilot Chat aparece e fornece uma avaliação do erro e do motivo pelo qual ocorreu. Neste exemplo, Copilot identifica uma correção de código sugerida, um botão para copiar código e um botão Pré-visualização para a correção de código.
Se tiver dúvidas sobre a exceção, pergunte-as na caixa de texto Ask Copilot.
Selecione o botão Pré-visualização.
O Visual Studio mostra uma pré-visualização do código com a correção sugerida.
Revise 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 agentica com o Agente Depurador
O Agente de Debug fornece um fluxo de trabalho de agente completo que valida erros em relação a comportamentos reais durante a execução, em vez de depender de análise estática. A experiência guia-o por um ciclo agente completo: compreender e reproduzir o problema, instrumentar a aplicação, isolar a causa raiz e validar a correção através da execução em tempo real.
Podes começar por um problema no GitHub ou no Azure DevOps, ou descrever o bug em linguagem natural. O Debugger Agent mapeia o problema para o seu código-fonte local e orienta-o na resolução. Pode interagir com o agente durante o processo de depuração para fornecer mais informações, discutir a sua teoria ou refinar a correção em tempo real.
Para usar o Agente Depurador:
- Abra a janela Copilot Chat (Visualizar > GitHub Copilot Chat).
- Selecionar Depurador no menu suspenso de modos no canto inferior esquerdo da janela do chat.
- Forneça um link de issue do GitHub ou Azure DevOps, ou descreva o bug em linguagem natural.
O Agente Depurador segue os seguintes passos:
- Injeção de contexto - Liga a descrição do problema ou bug ao seu código-fonte local.
- Reprodutor autónomo - Analisa o bug e, se faltarem passos de reprodução, cria um cenário mínimo para desencadear a falha.
- Hipótese e instrumentação - Gera hipóteses de falha e instrumenta a sua aplicação com tracepoints e pontos de interrupção condicionais para capturar o estado em tempo de execução.
- Validação em tempo de execução - Executa a sessão de depuração e analisa telemetria em tempo real para isolar a causa raiz.
- Correção direcionada - Sugere uma correção precisa no ponto exato de falha em vez de refatoração ampla.
- Validação humana final - Repete o cenário e confirma a correção no ambiente ao vivo juntamente com o agente.
Quando estiver no modo Agente no chat, também pode mudar para o agente Debugger utilizando @debugger no campo de entrada do chat. Para mais informações sobre o Debugger Agent e outros agentes incorporados, veja Use agentes incorporados e personalizados com GitHub Copilot.
Obtenha sugestões com pontos de interrupção condicionais e pontos de rastreamento
Copilot dá-te sugestões para pontos de interrupção condicionais e tracepoints que são específicos para o teu código.
Neste exemplo, mostramos sugestões de IA para um ponto de interrupção condicional. Para os 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");com isso:
// 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 o Copilot começa a trabalhar nas sugestões.
Quando surgirem as sugestões, escolha uma, como
item == "Test". Edite a sugestão para que o nome sejaFred.
Quando as sugestões aparecerem, escolha uma delas, como
item == "John". Edite a sugestão para que o nome sejaFred.
Para testar a expressão condicional:
Clique com o botão direito no projeto ConsoleApp_Copilot no Solution Explorer e escolha Properties.
Selecione Depuração>Geral>Abrir UI de perfis de inicialização de depuração.
No campo Argumentos de linha de comando, digite
5 Fred Joeem três linhas separadas.
Reinicie o depurador.
Quando o depurador pausa no ponto de interrupção, verifique o valor de
iteme confirme se o valor atual éFred.