Depurar seu aplicativo com o GitHub Copilot no Visual Studio

Neste artigo, você aprenderá a depurar com mais eficiência usando o GitHub Copilot. O Copilot pode fornecer correções de código, juntamente com análises detalhadas e explicações de como o código funciona. Ele ajuda com correções propostas para bugs e explica itens como exceções. O 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 botão Perguntar ao CopilotCaptura de tela do botão Pergunte ao Copilot.. Nesses cenários, Copilot já conhece o contexto de suas perguntas.

Para obter mais informações sobre o GitHub Copilot Completions no Visual Studio, confira Sobre o GitHub Copilot Completions no Visual Studio.

Pré-requisitos

Para começar, você precisa:

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 Exibir > GitHub Copilot Chat. Para obter mais informações, consulte O que é a extensão do GitHub Copilot Chat para Visual Studio?.

Iniciar uma sessão de depuração

  1. No Visual Studio, crie um novo aplicativo de Console em C#.

    Na janela inicial, escolha Criar um novo projeto. Digite console na caixa de pesquisa, selecione C# como o idioma e, em seguida, escolha Aplicativo de Console para .NET. Selecione Próximo. Digite um nome de projeto como ConsoleApp_Copilot e selecione Próximo.

    Escolha o framework de destino recomendado ou o .NET 8 e, em seguida, escolha Criar.

    Caso não veja o modelo de projeto Aplicativo de Console para o .NET, acesse Ferramentas>Obter Ferramentas e Recursos e o Visual Studio Installer será aberto. Escolha a carga de trabalho Desenvolvimento de área de trabalho do .NET e, em seguida, selecione Modificar.

    O Visual Studio cria o projeto de console, que aparece no Gerenciador de Soluções no painel direito.

  2. 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");
        }
    }
    
  3. 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]);
    
  4. 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].

    Captura de tela da janela Autos.

  5. Clique com o botão direito do mouse no código e escolha Pergunte ao Copilot para abrir a visualização de Chat integrada.

    Gorjeta

    Como alternativa, você pode clicar com o botão direito do mouse em uma variável na janela Autos ou Locais, ou escolher uma dica de dados, e selecionar Pergunte ao Copilot. Isso fornece ao Copilot o nome e o contexto da variável, portanto, você não precisa fornecer contexto por conta própria no chat.

  6. Digite a seguinte pergunta no modo de exibição de Chat embutido:

    Why does the args variable have a value of string[0]?
    

    Captura de tela do Chat do Copilot em linha.

    Quando você pressiona Enter, o Copilot fornece uma resposta com base na compreensão do código. (Você pode obter uma resposta diferente do que é mostrado aqui.)

    Captura de tela da pergunta respondida por Copilot.

    Se o Copilot tiver uma correção sugerida para seu código, ele lhe mostrará. Caso contrário, você pode pedir uma sugestão de código ao Copilot.

    Gorjeta

    No Chat embutido, use o símbolo "#" e selecione na lista suspensa para passar informações específicas ao Copilot, enquanto você faz referência a elas 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.

  7. Neste exemplo, role até o final da resposta do Copilot e selecione a pergunta de acompanhamento no final da janela de Chat embutida: "Como posso lidar com o caso quando nenhum argumento é passado para o programa?"

    Captura de tela da pergunta de acompanhamento do Copilot.

    Copilot mostra uma correção sugerida ao seu código.

    Captura de tela da correção sugerida por Copilot.

    Se você quiser aplicar a correção de código, escolha Aceitar.

  8. Escolha Cancelar para que possamos continuar aprendendo outros recursos do Copilot na próxima seção.

Depurar uma exceção com o 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 IndexOutOfRangeException ocorre 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

  1. Com o aplicativo pausado na exceção, selecione o botão Pergunte ao Copilot.

    captura de tela do botão Perguntar Copilot em caso de exceção.

    Se ainda não estiver aberta, a janela de Chat do Copilot será exibida e fornecerá uma avaliação do erro e por que ele ocorreu. Neste exemplo, o 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 você tiver dúvidas sobre a exceção, faça-as na caixa de texto Perguntar Copilot.

  2. Selecione o botão Versão prévia.

    Captura de tela do botão Visualizar na janela do chat do Copilot.

    O Visual Studio mostra uma visualização de código com a correção sugerida.

  3. Examine a correção sugerida e escolha Aceitar para aplicar a sugestão de código.

    Captura de tela da visualização de código no Visual Studio.

  4. Reinicie o depurador.

    Desta vez, nenhuma exceção ocorre. Foi corrigido!

Receba sugestões com pontos de interrupção condicionais e pontos de rastreamento

O Copilot oferece sugestões para pontos de interrupção condicionais e pontos de rastreamento específicos para o 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.

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

  2. 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);
    }
    
  3. À 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.

  4. Selecione o campo de expressão e Copilot começa a trabalhar em sugestões.

    Captura de tela do Copilot trabalhando em sugestões de ponto de interrupção condicional.

  5. Quando as sugestões aparecerem, escolha uma, como item == "John". Edite a sugestão para que o nome seja Fred.

    Captura de tela da sugestão do Copilot para ponto de interrupção condicional.

  6. Para testar a expressão condicional:

    1. Clique com o botão direito do mouse no projeto ConsoleApp_Copilot no Gerenciador de Soluções e escolha Propriedades.

    2. Selecione Depurar>Geral>Abrir interface do usuário dos perfis de inicialização de depuração.

    3. No campo Argumentos de linha de comando, insira 5 Fred Joe, em três linhas separadas.

      Captura de tela da inserção de argumentos de linha de comando para o projeto.

    4. Reinicie o depurador.

    Quando o depurador pausar no ponto de interrupção, verifique o valor de item e confirme se o valor atual é Fred.

Cenários aprimorados para IA

O 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 aqueles descritos na tabela a seguir.

Recurso ou cenário Link
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 Depuração usando o Copilot neste artigo.
Pontos de interrupção condicionais e pontos de rastreamento Consulte 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 Modificar a expressão do visualizador.
Valores retornados embutidos Consulte Exibir resultados retornados de chamadas de método.
Descrições resumidas de tópicos Consulte Exibição de threads (pilhas paralelas).
Insights automáticos para criação de perfil Consulte Obter assistência da IA com insights automáticos.

Na maioria desses cenários, você obtém assistência direcionada usando o botão Perguntar ao CopilotCaptura de tela do botão Pergunte ao Copilot.. Copilot já sabe o contexto para suas perguntas. Por exemplo, ele conhece a pilha de chamadas atual, a linha de código que você está perguntando e o nome da exceção (se ocorreu), portanto, você não precisa fornecer contexto por conta própria no chat. O Copilot também fornece sugestões para o uso de pontos de interrupção condicionais e pontos de rastreamento.