Compartilhar via


Visão geral do depurador de Visual Studio

Este artigo apresenta as ferramentas de depurador fornecidas pelo Visual Studio. No contexto do Visual Studio, quando você depurar seu aplicativo, isso geralmente significa que você está executando o aplicativo com o depurador conectado (ou seja, no modo de depuração). 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, 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 e assim por diante. Se você não estiver familiarizado com a depuração, talvez queira ler a Depuração para iniciantes absolutos antes de passar por este artigo. Se você estiver tentando executar uma tarefa específica e precisar saber qual recurso usar, consulte o localizador de recursos do Depurador. Para experimentar a depuração assistida por IA, consulte Debug com Copilot.

Os recursos descritos aqui são aplicáveis a C#, C++, Visual Basic, JavaScript e outros idiomas compatíveis com 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.

Talvez você ainda não tenha nenhum ponto de interrupção definido para usar para examinar o código do aplicativo. Depois de definir pontos de interrupção, você estará pronto para iniciar 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 examinar os valores das variáveis, o comportamento da memória ou se um branch de código está ou não sendo executado.

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çãoDefinir um ponto de interrupção

Pressione F5 (Depurar Iniciar Depuração) ou o botão Iniciar DepuraçãoIniciar a depuraçãoIniciar 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, o F5 inicia o depurador e pára no primeiro ponto de interrupção.

Edição de código dinâmico

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

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 ParaF11 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 nonuser (se você quiser mais detalhes, consulte Just My Code).

Nota

No código gerenciado, aparece uma caixa de diálogo perguntando se deseja ser notificado quando você pula automaticamente sobre a propriedade e o operador (comportamento padrão). Se você quiser alterar a configuração posteriormente, desabilite a configuração Pular sobre propriedades e operadores no painel em Depuração de Todas as ConfiguraçõesGeral.

Nota

No código gerenciado, aparece uma caixa de diálogo perguntando se deseja ser notificado quando você pula automaticamente sobre a propriedade e o operador (comportamento padrão). Se você quiser alterar a configuração mais tarde, desabilite a configuração Saltar sobre propriedades e operadores na caixa de diálogo Ferramentas Opções em DepuraçãoGeral.

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.

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 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é o botão Run to Click (Executar até aqui) Captura de tela do botão Executar até Clicar do depurador do Visual Studio. O botão indica que a execução deve ser realizada até a linha onde o botão está. aparece à direita.

Captura de tela do depurador do Visual Studio mostrando o botão 'Executar para Clicar' à direita de uma chamada de função.

Enquanto estiver no depurador, passe o mouse sobre uma linha de código até o botão Executar até Clicar (Executar execução até aqui) Captura de tela do botão 'Executar até Clicar' do depurador do Visual Studio. O botão indica que a execução deve ir até a linha em que o botão é colocado. aparece à esquerda.

Screenshot do depurador de Visual Studio mostrando o botão Executar para Clicar aparecendo à esquerda de uma chamada para uma função.

Nota

O botão Run to Click (Executar até aqui) está disponível desde o Visual Studio 2017.

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.

Executar até o cursor

Ao editar 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 para Cursor (ou pressione CtrlF10). 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.

Captura de tela que mostra a opção Executar para Cursor.Executar para o Cursor

Executar até o cursorExecutar até o cursor

Se você definir 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 de Pilha de Chamadas durante a depuração.

Reinicie seu aplicativo rapidamente

Selecione o botão Reiniciar AplicativoRestart App 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çãoPara a depuração, em vez de Reiniciar.

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

Captura de tela que mostra a janela de Autos. Janela de Autos.

Janela AutosJanela 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.

Captura de tela que mostra a janela Locais.Janela Locais

Janela LocaisJanela Locais

Neste exemplo, o objeto e o objeto estão no escopo. Para obter mais informações, consulte Inspeção de Variáveis nas Janelas de Automáticas e Locais.

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, consulte Set a Watch using the Watch and QuickWatch Windows.

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

Captura de tela que mostra a janela de Inspeção. Janela de Inspeção.

Janela InspeçãoJanela 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 variáveis, as janelas Watch sempre mostram as variáveis que você está monitorando (elas ficam esmaecidas quando fora de 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.

Selecione a janela Pilha de Chamadas durante a depuração, que é aberta por padrão no painel inferior direito.

Captura de tela que mostra a janela Pilha de Chamadas. Examinar a pilha de chamadas

Examinar a pilha de chamadasexaminar 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 faz o depurador avançar.

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çãoAuxiliar de exceção

Neste exemplo, o Auxiliar de Exceção mostra uma exceção 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 .

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 Copilot, poderá obter assistência de IA enquanto estiver depurando exceções. Basta procurar o botão Analisar com o CopilotCaptura de tela do botão Analisar com o Copilot.. Para obter mais informações, consulte Debug com Copilot.

Dica

Se você tiver Copilot, poderá obter assistência de IA enquanto estiver depurando exceções. Basta procurar o botão Ask CopilotScreenshot of Ask Copilot button.. Para obter mais informações, consulte Debug com Copilot.

Obter assistência de IA

Se você tiver Copilot, poderá obter assistência de IA durante a depuração. Para obter mais informações, consulte Debug com Copilot. Durante a depuração, você também pode encontrar o botão Analyze com o CopilotCaptura de tela do botão Analyze com o Copilot.. Nesses cenários, Copilot já conhece o contexto de suas perguntas, portanto, você não precisa fornecer contexto por conta própria em Copilot chat.

Obter assistência de IA

Se você tiver Copilot, poderá obter assistência da IA durante a depuração. Para obter mais informações, consulte Debug com Copilot. Durante a depuração, você também pode procurar o botão Ask CopilotScreenshot of Ask Copilot button.. Nesses cenários, Copilot já conhece o contexto de suas perguntas, portanto, você não precisa fornecer contexto por conta própria em Copilot chat.

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 em Gerenciador de Soluções e selecionando Properties. As propriedades de depuração normalmente aparecem na guia Compilar ou Depurar, dependendo do tipo de projeto específico.

A partir de Visual Studio 2022, a guia Debug em projetos .NET fornece um link para a UI de perfis de inicialização de depuração, onde você pode definir propriedades relacionadas à depuração.

Captura de tela que mostra as propriedades do projeto.Propriedades do projeto

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

propriedades do projeto Propriedades de projetoPropriedades de projeto

Depurar aplicativos de ASP.NET ao vivo no Serviço de Aplicativo do Azure

Para depurar em Serviço de Aplicativo do Azure, consulte Debug Azure apps.

Para Visual Studio Enterprise (somente), o depurador Snapshot 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.

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 ser executados no .NET Framework 4.6.1 ou posterior e ASP.NET Core aplicativos devem ser executados no .NET Core 2.0 ou posterior no Windows.

Para obter mais informações, consulte Depurar aplicativos ASP.NET ao vivo usando o Depurador de Snapshots.

Exibir instantâneos com o step-back do IntelliTrace (Visual Studio Enterprise)

O recuo do IntelliTrace tira automaticamente um instantâneo do seu aplicativo em cada ponto de interrupção e evento de etapa do depurador. 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.

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ê teve uma rápida visão geral de muitos recursos do depurador. Talvez você queira uma análise mais detalhada de um desses recursos, como pontos de interrupção.

Aprenda a usar pontos de interrupção