Compartilhar via


Primeira olhada no Depurador do Visual Studio

Este tópico apresenta as ferramentas de depurador fornecidas pelo Visual Studio. No contexto do Visual Studio, quando você depura seu aplicativo, significa que você está executando o aplicativo com o depurador anexado (ou seja, no modo de depurador). Quando você faz isso, o depurador fornece muitas maneiras de ver o que seu código está fazendo enquanto ele é executado. Você pode percorrer seu código e examinar os valores armazenados em variáveis, pode definir relógios em variáveis para ver quando os valores são alterados, você pode examinar o caminho de execução do código, et al. Se esta for a primeira vez que você tenta depurar o código, convém ler Depuração para iniciantes absolutos antes de passar por este tópico. Se você estiver tentando executar uma tarefa específica e precisar saber qual recurso usar, confira Localizador de Recursos do Depurador. Para experimentar a depuração assistida por IA, confira Depurar com o Copilot.

Os recursos descritos aqui são aplicáveis a C#, C++, Visual Basic, JavaScript e outros idiomas compatíveis com o Visual Studio (exceto quando observado).

Definir um ponto de interrupção e iniciar o depurador

Pontos de interrupção são um recurso útil quando você conhece a linha de código ou a seção de código que deseja examinar detalhadamente em runtime. Para obter informações sobre os diferentes tipos de pontos de interrupção, como pontos de interrupção condicionais e pontos de interrupção de função, confira Como usar pontos de interrupção.

Para depurar, você precisa iniciar o aplicativo com o depurador anexado ao processo do aplicativo. Para fazer isso:

  • Pressione (F5Depurar > Iniciar Depuração), que é o método mais comum.

No entanto, no momento, talvez você não tenha definido nenhum ponto de interrupção para examinar o código do aplicativo, portanto, faremos isso primeiro e, em seguida, iniciaremos a depuração. Pontos de interrupção são o recurso mais básico e essencial da depuração confiável. Um ponto de interrupção indica onde o Visual Studio deve suspender o código em execução para que você possa dar uma olhada nos valores das variáveis ou no comportamento da memória ou se um branch de código está sendo executado ou não.

Se você tiver um arquivo aberto no editor de código, poderá definir um ponto de interrupção clicando na margem à esquerda de uma linha de código.

Definir um ponto de interrupção

Definir um ponto de interrupção

Pressione F5 (Depurar > Iniciar Depuração) ou o botão Iniciar Depuração Iniciar a depuração na barra de ferramentas Depurar e o depurador será executado até o primeiro ponto de interrupção que encontrar. Se o aplicativo ainda não estiver em execução, F5 iniciará o depurador e o interromperá no primeiro ponto de interrupção.

Fornecemos os atalhos de teclado para a maioria dos comandos porque eles tornam a navegação do código do aplicativo mais rápida. (Comandos equivalentes, como comandos de menu, são mostrados entre parênteses.) Para obter mais detalhes sobre como usar os comandos de etapa, confira Navegar pelo código no depurador.

Para iniciar seu aplicativo com o depurador anexado, pressione F11 (Depurar > Intervir). F11 é o comando Intervir, que avança a execução do aplicativo uma instrução por vez. Quando você inicia o aplicativo com F11, o depurador pausa na primeira instrução que é executada.

F11 Passo Para

F11 passo para

A seta amarela representa a instrução na qual o depurador fez uma pausa, que também suspende a execução do aplicativo no mesmo ponto (essa instrução ainda não foi executada).

F11 é uma boa maneira de examinar o fluxo de execução com mais detalhes. (Para se mover mais rapidamente pelo código, mostramos algumas outras opções também.) Por padrão, o depurador ignora o código não usuário (se você quiser mais detalhes, consulte Just My Code).

Nota

No código gerenciado, você verá uma caixa de diálogo perguntando se deseja ser notificado quando passar automaticamente por propriedades e operadores (comportamento padrão). Se você quiser alterar a configuração depois, desabilite a configuração Passar por propriedades e operadores no menu Ferramentas> Opções em Depuração.

Passar pelo código para ignorar funções

Quando você estiver em uma linha de código que é uma chamada de função ou de método, poderá pressionar F10 (Depurar > Intervir) em vez de F11.

Pressionar F10 avança o depurador sem intervir em funções ou métodos no código do aplicativo (o código ainda é executado). Pressionando F10, você pode ignorar o código no qual não está interessado. Dessa forma, você pode acessar rapidamente o código no qual está mais interessado. Para obter mais detalhes sobre como usar os comandos de etapa, confira Navegar pelo código no depurador.

Executar rapidamente até um ponto no código usando o mouse

O uso do botão Executar para clicar é semelhante à configuração de um ponto de interrupção temporário. Esse comando também é útil para se locomover rapidamente em uma região visível do código do aplicativo. Você pode usar Executar com um Clique em qualquer arquivo aberto. Para obter mais detalhes sobre esse recurso e recursos de navegação semelhantes, confira Executar para um local específico em seu código.

Enquanto estiver no depurador, passe o mouse sobre uma linha de código até que o botão Executar com um Clique (Realizar a execução até aqui) Captura de tela do botão Executar para Clicar do Depurador do Visual Studio. O botão indica que a execução deve ser executada na linha em que o botão é colocado. apareça à esquerda.

Captura de tela do Depurador do Visual Studio mostrando o botão Executar para Clicar aparecendo à esquerda de uma chamada para uma função.

Captura de tela do Depurador do Visual Studio mostrando o botão Executar para Clicar aparecendo à esquerda de uma chamada para uma função.

Nota

O botão Executar com um Clique (Realizar a execução até aqui) está disponível no Visual Studio 2017 em diante.

Clique no botão Executar com um Clique (Realizar a execução até aqui). O depurador avança para a linha de código em que você clicou.

Avançar o depurador para fora da função atual

Às vezes, talvez você queira continuar a sessão de depuração, avançando o depurador até o fim da função atual.

Pressione Shift + F11 (ou Depurar > Sair).

Esse comando retoma a execução do aplicativo (e avança o depurador) até que a função atual retorne.

Executar até o cursor

Ao editar o código (em vez de pausar no depurador), clique com o botão direito do mouse em uma linha de código em seu aplicativo e escolha Executar no Cursor (ou pressione Ctrl + F10). Esse comando inicia a depuração e define um ponto de interrupção temporário na linha de código atual. Para obter mais detalhes sobre esse recurso e recursos de navegação semelhantes, confira Executar para um local específico em seu código.

Executar até o cursor

Executar até o cursor

Se você tiver definido pontos de interrupção, o depurador pausará no primeiro ponto de interrupção que ele atingir.

Pressione F5 até alcançar a linha de código em que você selecionou Executar até o Cursor.

Esse comando é útil quando você está editando o código e deseja definir rapidamente um ponto de interrupção temporário e iniciar o depurador ao mesmo tempo.

Nota

Você pode usar Executar até o Cursor na janela Pilha de Chamadas enquanto está depurando.

Reinicie seu aplicativo rapidamente

Clique no botão ReiniciarReiniciar Aplicativo na Barra de Ferramentas de Depuração (ou pressione Ctrl + Shift + F5).

Ao pressionar Reiniciar, você economiza tempo em comparação com a opção de parar o aplicativo e reiniciar o depurador. O depurador pausa no primeiro ponto de interrupção alcançado durante a execução do código.

Se você quiser parar o depurador e voltar para o editor de código, poderá pressionar o botão de parada vermelho Para a depuração, em vez de Reiniciar.

Edição de código dinâmico

O Visual Studio 2022 dá suporte à edição de código ao vivo durante a depuração. Para obter informações detalhadas, consulte:

Edite seu código e continue testando (C#, VB, C++, XAML)

Na maioria dos idiomas compatíveis com o Visual Studio, você pode editar seu código no meio de uma sessão de depuração e continuar a depuração. Para usar esse recurso, clique em seu código com o cursor enquanto estiver em pausa no depurador, faça edições e pressione F5, F10ou F11 para continuar a depuração. Para saber mais sobre como usar esse recurso e suas limitações, confira Editar e Continuar.

Editar e continuar a depuração

Para modificar o código XAML durante uma sessão de depuração, consulte Escrever e depurar código XAML em execução com a Recarga Dinâmica de XAML.

Inspecionar variáveis com dicas de dados

Agora que você sabe um pouco mais sobre a navegação, é uma boa oportunidade começar a inspecionar o estado do aplicativo (variáveis) com o depurador. Os recursos que permitem inspecionar variáveis são alguns dos recursos mais úteis do depurador e há diferentes maneiras de fazer isso. Muitas vezes, ao tentar depurar um problema, você está tentando descobrir se as variáveis estão armazenando os valores que você espera que eles tenham em um estado de aplicativo específico. Para obter informações detalhadas sobre como usar dicas de dados, consulte Exibir valores de dados em dicas de dados.

Com o depurador em pausa, passe o mouse sobre um objeto com o mouse e você verá seu valor ou o valor da sua propriedade padrão.

Exibir uma dica de dados

Exibir uma dica de dados

Se a variável tiver propriedades, você poderá expandir o objeto para ver todas as suas propriedades.

Muitas vezes, durante a depuração, queremos uma maneira rápida de verificar valores de propriedade em objetos e as dicas de dados são uma ótima maneira de fazer isso.

Inspecionar variáveis com as janelas Autos e Locais

Na janela Autos, você verá variáveis junto com seu valor atual e seu tipo. A janela Autos mostra todas as variáveis usadas na linha atual ou na linha anterior (em C++, a janela mostra variáveis nas três linhas de código anteriores. Verifique a documentação sobre o comportamento específico do idioma). Para obter mais informações sobre como usar essas janelas, consulte Inspecionar variáveis nas janelas Autos e Locais.

Durante a depuração, examine a janela Autos na parte inferior do editor de códigos.

Janela Autos

janela autos Janela Autos

Nota

Em JavaScript, há compatibilidade com a janela Locais, mas não com a janela Autos.

Em seguida, examine a janela Locais. A janela Locais mostra as variáveis que estão no escopo no momento.

Janela Locais

Janela de Locais Janela Locais

Neste exemplo, o objeto this e o objeto f estão no escopo. Para obter mais informações, confira Inspecionar variáveis nas janelas Locais e Autos.

Exibir valores retornados de chamadas de método

No código do .NET e do C++, você pode examinar os valores retornados na janela Autos ao percorrer ou sair de uma chamada de método, o que pode ser útil quando o valor retornado não é armazenado em uma variável local. Para obter mais informações, consulte Exibir valores retornados de chamadas de método.

A partir do Visual Studio 2022 versão 17.12 Prévia 3, você também pode visualizar valores de retorno de chamadas de método em linha e não apenas na janela Autos.

Captura de tela mostrando os valores retornados das chamadas de método.

Com o Copilot habilitado, você também pode obter assistência específica relacionada ao valor de retorno embutido, usando o botão "Perguntar ao Copilot" que aparece na dica de dados para o valor de retorno.

Captura de tela mostrando os valores retornados das chamadas de método com o ícone Copilot.

Definir uma inspeção

Você pode usar uma janela Watch para especificar uma variável (ou uma expressão) na qual deseja ficar de olho. Para obter informações detalhadas, confira Definir uma inspeção usando as janelas Inspeção e QuickWatch.

Durante a depuração, clique com o botão direito do mouse em um objeto e escolha Adicionar Inspeção.

Janela Inspeção

Janela Inspeção

Neste exemplo, há uma inspeção definida no objeto e você pode ver seu valor sendo alterado, conforme percorre o depurador. Ao contrário das outras janelas de variáveis, a janela Inspeção sempre mostra as variáveis que você está inspecionando (eles ficam esmaecidas quando estão fora do escopo).

Examinar a pilha de chamadas

A janela Pilha de Chamadas mostra a ordem em que os métodos e as funções são chamados. A linha superior mostra a função atual. A segunda linha mostra a função ou a propriedade da qual ela foi chamada e assim por diante. A pilha de chamadas é uma boa maneira de examinar e entender o fluxo de execução de um aplicativo. Para obter informações detalhadas, confira Como examinar a pilha de chamadas.

Nota

A janela Pilha de Chamadas é semelhante à perspectiva de Depuração em alguns IDEs, como o Eclipse.

Clique na janela Pilha de Chamadas durante a depuração, a qual fica aberta por padrão no painel inferior direito.

Examinar a pilha de chamadas

Examinar a pilha de chamadas

Você pode clicar duas vezes em uma linha de código para examinar esse código-fonte e isso também altera o escopo atual que está sendo inspecionado pelo depurador. Isso não avança o depurador.

Você também pode usar os menus acessados ao clicar com o botão direito do mouse na janela Pilha de Chamadas para fazer outras coisas. Por exemplo, você pode inserir pontos de interrupção em funções especificas, reiniciar o aplicativo usando Executar até o Cursor e examinar o código-fonte.

Inspecionar uma exceção

Quando seu aplicativo lança uma exceção, o depurador leva você para a linha de código que lançou a exceção. Para obter informações detalhadas, consulte Inspecionar uma exceção usando o Auxiliar de Exceção.

Auxiliar de exceção

Neste exemplo, o Auxiliar de exceção mostra uma exceção System.NullReferenceException e uma mensagem de erro que diz que a referência de objeto não está definida como uma instância do objeto. Além disso, ele nos diz que o valor da cadeia de caracteres foi nulo quando você tentou chamar o método Trim.

Auxiliar de exceção

Neste exemplo, o Auxiliar de Exceção mostra uma exceção System.Argument e uma mensagem de erro que diz que o caminho não é um formato válido. Portanto, sabemos que o erro ocorreu em um método ou argumento de função.

Neste exemplo, a chamada DirectoryInfo deu o erro na cadeia de caracteres vazia armazenada na variável value.

O Auxiliar de Exceção é um ótimo recurso que pode ajudá-lo a depurar erros. Você também pode fazer coisas como exibir detalhes do erro e adicionar uma inspeção por meio do Auxiliar de Exceção. Ou, se necessário, você pode alterar as condições para lançar a exceção específica. Para obter mais informações sobre como lidar com exceções em seu código, consulte técnicas de depuração e ferramentas .

Expanda o nó Configurações de Exceção para ver mais opções de como lidar com esse tipo de exceção, mas você não precisa alterar nada neste tour!

Dica

Se você tiver o Copilot, poderá obter assistência de IA enquanto estiver depurando exceções. Basta procurar o botão Pergunte ao CopilotCaptura de tela do botão Pergunte ao Copilot.. Para obter mais informações, confira Depurar com o Copilot.

Obter assistência de IA

Se você tiver o Copilot, poderá obter assistência de IA enquanto estiver depurando. Para obter mais informações, confira Depurar com o Copilot. Durante a depuração, você também pode procurar o botão Pergunte ao CopilotCaptura de tela do botão Pergunte ao Copilot.. Nesses cenários, Copilot já conhece o contexto de suas perguntas, portanto, você não precisa fornecer contexto por conta própria no chat do Copilot.

Configurar a depuração

Você pode configurar seu projeto para compilar como uma configuração de Depuração ou Versão, configurar propriedades do projeto para depuração ou definir configurações gerais para depuração. Além disso, você pode configurar o depurador para exibir informações personalizadas usando recursos como o atributo DebuggerDisplay ou, para C/C++, a estrutura NatVis.

As propriedades de depuração são específicas para cada tipo de projeto. Por exemplo, você pode especificar um argumento a ser passado para o aplicativo ao iniciá-lo. Você pode acessar as propriedades específicas do projeto clicando com o botão direito do mouse no projeto no Gerenciador de Soluções e selecionando Propriedades. As propriedades de depuração normalmente aparecem na guia Compilar ou Depurar, dependendo do tipo de projeto específico.

A partir do Visual Studio 2022, a guia Depurar para projetos .NET fornece um link para a interface do usuário de perfis de inicialização de depuração, na qual você pode definir propriedades relacionadas à depuração.

propriedades do projeto Propriedades de projeto

propriedades do projeto Propriedades de projeto

Depurar aplicativos ASP.NET em execução no Azure App Service

Para depurar aplicativos no Serviço de Aplicativo do Azure, consulte Depurar aplicativos do Azure.

No Visual Studio Enterprise (somente), o Depurador de Instantâneos tira um instantâneo de seus aplicativos em produção quando o código no qual você está interessado é executado. Para instruir o depurador a tirar um instantâneo, defina snappoints e logpoints em seu código. O depurador permite que você veja exatamente o que deu errado, sem afetar o tráfego do aplicativo de produção. O Depurador de Instantâneos do Visual Studio pode ajudar a reduzir drasticamente o tempo que leva para resolver problemas que ocorrem em ambientes de produção.

iniciar o depurador de instantâneo

A coleção de instantâneos está disponível para aplicativos ASP.NET em execução no Serviço de Aplicativo do Azure. ASP.NET aplicativos devem estar em execução no .NET Framework 4.6.1 ou posterior e os aplicativos ASP.NET Core devem estar em execução no .NET Core 2.0 ou posterior no Windows.

Para obter mais informações, confira Depurar aplicativos ASP.NET dinâmicos usando o Depurador de Instantâneos.

Exibir instantâneos com o retrocesso do IntelliTrace (Visual Studio Enterprise)

O retrocesso do IntelliTrace tira automaticamente um instantâneo do seu aplicativo em cada evento de etapa do depurador e do ponto de interrupção. Os instantâneos gravados permitem que você volte para pontos de interrupção ou etapas anteriores e exiba o estado do aplicativo como era no passado. O step-back do IntelliTrace pode economizar tempo quando você quiser ver o estado do aplicativo anterior, mas não deseja reiniciar a depuração ou recriar o estado do aplicativo desejado.

É possível navegar e exibir instantâneos usando os botões Voltar e Avançar na barra de ferramentas Depurar. Esses botões navegam pelos eventos que aparecem na guia Eventos na janela Ferramentas de Diagnóstico.

Botões Voltar e Avançar

Para obter mais informações, confira a página Inspecionar estados anteriores do aplicativo usando o IntelliTrace.

Depurar problemas de desempenho

Se o aplicativo for executado muito lentamente ou usar muita memória, talvez seja necessário testar seu aplicativo com as ferramentas de criação de perfil no início. Para obter mais informações sobre ferramentas de profiling, como a ferramenta de uso da CPU e o Analisador de Memória, consulte Primeira olhada nas ferramentas de profiling.

Neste tutorial, você obteve uma visão rápida de muitos recursos do depurador. Talvez você deseje fazer uma análise mais detalhada de uma dessas funcionalidades, como pontos de interrupção.