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 coisas 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 do depurador para fazer perguntas detalhadas relacionadas ao seu código e aos problemas de depuração em geral.

Além disso, o Copilot fornece ajuda mais precisa para alguns cenários específicos, incluindo o seguinte:

  • Exceções
  • Variáveis
  • Deadlocks
  • Insights automáticos para Uso da CPU

Para obter assistência de IA enquanto estiver depurando nesses cenários, procure o botão Pergunte ao Copilot Captura de tela do botão Perguntar ao Copilot.. Nesses cenários, o Copilot já conhece o contexto das suas perguntas. Por exemplo, ele conhece a pilha de chamadas atual, a linha de código da sua pergunta e o nome da exceção (se houver), para que você não precise fornecer contexto no chat. O Copilot também fornece sugestões de uso de pontos de interrupção condicionais e tracepoints.

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 do seguinte:

Obtenha assistência de IA para depurar seu aplicativo

O exemplo simples a seguir mostra como obter assistência de IA usando a visualização de bate-papo embutida.

Observação

Você também pode obter ajuda usando a janela de bate-papo separada selecionando Exibir > bate-papo do GitHub Copilot. Para obter mais informações, consulte O que é a extensão de bate-papo do GitHub Copilot para Visual Studio?

Iniciar uma sessão de depuração

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

    Na tela Iniciar, selecione Criar um novo projeto. Digite console na caixa de pesquisa, selecione C# como a linguagem e escolha Aplicativo de Console para .NET. Escolha Próxima. Digite um nome de projeto, como ConsoleApp_Copilot, e selecione Avançar.

    Escolha a estrutura de destino recomendada ou o .NET 8 e escolha Criar.

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

    O Visual Studio criará o projeto de console, que aparecerá no Gerenciador de Soluções no painel à direita.

  2. Substitua o código em Program.cs pelo código a seguir:

    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 declaraçã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 Perguntar ao Copilot para abrir a visualização de bate-papo embutida.

    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, para que você não precise fornecer contexto no chat.

  6. Digite a seguinte pergunta no modo de exibição de bate-papo embutido:

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

    Captura de tela do chat embutido do Copilot.

    Quando você pressiona Enter, o Copilot fornece uma resposta com base em sua compreensão do seu código. (Você pode obter uma resposta diferente da mostrada aqui.)

    Captura de tela da pergunta respondida pelo Copilot.

    Se o Copilot tiver uma correção sugerida para o seu código, ele mostrará a você. Caso contrário, você pode pedir ao 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á fazer essa seleção na lista suspensa #. Você também pode usar o símbolo "#" para referenciar os 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 bate-papo embutida, "Como posso lidar com o caso quando nenhum argumento é passado para o programa?"

    Captura de tela da pergunta de acompanhamento do Copilot.

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

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

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

Obtenha assistência de IA para uma exceção

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 nas correções sugeridas pela IA.

Iniciar uma sessão de depuração

  • Enquanto estiver pausado no depurador usando o mesmo aplicativo de exemplo, pressione F11 ou Depurar>Intervir para executar a instrução atual.

    Um IndexOutOfRangeException ocorre e o aplicativo pausa, mostrando a exceção.

    Para obter assistência de IA para a exceção, vá para a próxima seção.

Solicitar assistência com IA

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

    Captura de tela do botão Perguntar ao Copilot em uma exceção.

    Se ainda não estiver aberta, a janela 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, pergunte-as na caixa de texto Pergunte ao Copilot.

  2. Selecione o botão Visualizar.

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

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

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

    Captura de tela do preview do código no Visual Studio.

  4. Reinicie o depurador.

    Desta vez, nenhuma exceção ocorre. O problema foi corrigido.

Obtenha assistência de IA com pontos de interrupção condicionais e tracepoints

O Copilot fornece sugestões de pontos de interrupção condicionais e tracepoints específicos para seu código.

Neste exemplo, mostramos as sugestões de IA de um ponto de interrupção condicional. Para tracepoints, a assistência de IA funciona da mesma maneira.

  1. Remova o ponto de interrupção atual clicando nele ou clique 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 calha e escolha Inserir ponto de interrupção condicional.

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

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

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

    Captura de tela da sugestão do Copilot de 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 de 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 certifique-se de que o valor atual seja Fred.

Obtenha assistência de IA no visualizador tabular IEnumerable

Para obter assistência de IA para o visualizador de tabela IEnumerable, consulte Modificar a expressão do visualizador.

Obter assistência de IA para insights automáticos

Além da assistência de depuração interativa, o Copilot fornece informações detalhadas nos insights automáticos de Uso da CPU Insights Automáticos. Ele fornece informações e insights relacionados a um conjunto de insights de desempenho específicos. Com o Copilot, faça perguntas sobre funções nos caminhos críticos identificados em seu código, o que pode ajudá-lo a produzir um código mais eficiente ou econômico.

O botão Perguntar ao Copilot é exibido mesmo que nenhum insight de desempenho específico seja identificado. Selecione Perguntar ao Copilot para aprender com o Copilot e comece a fazer perguntas.

Animação do Copilot com uso de CPU.