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 a sua aplicação, isso geralmente significa que está a executar a aplicação com o depurador ligado (ou seja, em modo de depurador). Quando você faz isso, o depurador fornece muitas maneiras de ver o que seu código está fazendo enquanto é executado. Você pode percorrer seu código e olhar para os valores armazenados em variáveis, você pode definir relógios em variáveis para ver quando os valores mudam, você pode examinar o caminho de execução do seu código, et al. Se esta é a primeira vez que você tenta depurar código, você pode querer 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, consulte Localizador de recursos do depurador. Para experimentar a depuração assistida por IA, veja Depurar com o Copilot.
Os recursos descritos aqui são aplicáveis a C#, C++, Visual Basic, JavaScript e outras linguagens suportadas pelo Visual Studio (exceto onde indicado).
Definir um ponto de interrupção e iniciar o depurador
Os 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 em detalhes no tempo de execução. Para mais informações sobre os diferentes tipos de pontos de interrupção, como os pontos de interrupção condicionais e os pontos de interrupção de função, consulte Usando pontos de interrupção.
Para depurar, é necessário iniciar a aplicação com o depurador ligado ao processo da aplicação. Para fazer isso:
- Pressione F5 (Depurar > Iniciar Depuração), que é o método mais comum.
No entanto, poderás ainda não ter definido nenhum ponto de paragem para analisar o código da tua aplicação, por isso vamos fazer isso primeiro e depois começar a depuração. Os pontos de interrupção são o recurso mais básico e essencial para uma depuração fiável. Um ponto de interrupção indica onde o Visual Studio deve suspender seu código em execução para que você possa examinar os valores das variáveis, ou o comportamento da memória, ou se uma ramificação do código está sendo executada ou não.
Se você tiver um arquivo aberto no editor de códigos, poderá definir um ponto de interrupção clicando na margem à esquerda de uma linha de código.
Pressione F5 (Debug > Start Debugging) ou o botão Start Debugging na Barra de Ferramentas de Depuração, e o depurador será executado até o primeiro ponto de interrupção encontrado. Se o aplicativo ainda não estiver em execução, F5 inicia o depurador e para no primeiro ponto de interrupção.
Navegar pelo código no depurador usando comandos step
Fornecemos os atalhos de teclado para a maioria dos comandos porque eles tornam a navegação do código do seu 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 passo, consulte Navegar no código no depurador.
Para iniciar seu aplicativo com o depurador anexado, pressione F11 (Debug > Step Into). F11 é o comando Step Into e avança a execução da aplicação uma instrução de cada vez. Quando inicias a aplicação com F11, o depurador interrompe na primeira instrução que é executada.
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 através do código, mostramos algumas outras opções também.) Por padrão, o depurador ignora o código que não é de usuário (se você quiser mais detalhes, consulte Just My Code).
Observação
No código gerenciado, você verá uma caixa de diálogo perguntando se deseja ser notificado quando passar automaticamente sobre propriedades e operadores (comportamento padrão). Se quiser alterar a configuração mais tarde, desative configuração Passo sobre propriedades e operadores no menu Ferramentas > Opções em de Depuração.
Passar o código para ignorar funções
Quando você estiver em uma linha de código que é uma função ou chamada de método, você pode pressionar F10 (Debug > Step Over) em vez de F11.
F10 avança o depurador sem entrar em funções ou métodos no código da sua aplicação (o código ainda é executado). Ao pressionar F10, você pode pular o código que não lhe interessa. Desta forma, pode aceder rapidamente ao código em que está mais interessado. Para obter mais detalhes sobre como usar os comandos step, consulte código Navigate no depurador.
Vá rapidamente para um ponto no seu código usando o rato
Usar o botão Executar até clicar é semelhante à definição de um ponto de interrupção temporário. Esse comando também é útil para se locomover rapidamente dentro de uma região visível do código do aplicativo. Você pode usar Executar para clicar em qualquer arquivo aberto. Para obter mais detalhes sobre esse recurso e recursos de navegação semelhantes, consulte 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 para Clique (Executar execução para aqui) aparece à esquerda.
Observação
O botão Executar para Clique (Executar execução aqui) está disponível a partir do Visual Studio 2017.
Clique no botão Executar até Clique (Executar a execução aqui). O depurador avança para a linha de código onde clicaste.
Avançar o depurador para fora da função atual
Às vezes, você pode querer continuar sua sessão de depuração, mas avançar o depurador até a função atual.
Pressione Shift + F11 (ou Depurar > Sair do Passo).
Este comando retoma a execução do aplicativo (e avança o depurador) até que a função atual retorne.
Executar até ao cursor
Quando estiver a editar código (sem pausa no depurador), clique com o botão direito do rato numa linha de código na sua aplicação e escolha Executar até ao Cursor (ou pressione Ctrl + F10). Este 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, consulte Executar para um local específico em seu código.
Se você tiver definido pontos de interrupção, o depurador pausará no primeiro ponto de interrupção atingido.
Pressione F5 até chegar à linha de código em que selecionou Executar até ao cursor.
Este comando é útil quando você está editando código e deseja definir rapidamente um ponto de interrupção temporário e iniciar o depurador ao mesmo tempo.
Observação
Você pode usar Executar até o Cursor na janela da Pilha de Chamadas enquanto estiver depurando.
Reinicie seu aplicativo rapidamente
Clique no botão Reiniciar na Barra de Ferramentas Depurar (ou pressione Ctrl + Shift + F5).
Ao pressionar Reiniciar, isso economiza tempo em vez de parar a aplicação e reiniciar o depurador novamente. O depurador pausa no primeiro ponto de interrupção atingido pela execução do código.
Se quiser interromper o depurador e voltar para o editor de código, pode pressionar o botão vermelho de parar em vez de Reiniciar.
Edição de código ao vivo
O Visual Studio 2022 oferece suporte à edição de código ao vivo durante a depuração. Para obter informações mais pormenorizadas, consulte:
Edite seu código e continue a depuração (C#, VB, C++, XAML)
Na maioria dos idiomas suportados pelo 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 no código com o cursor enquanto estiver pausado no depurador, faça edições e pressione F5, F10ou F11 para continuar a depuração. Para obter mais informações sobre como usar este recurso e sobre as limitações deste recurso, consulte Editar e Continuar.
Para modificar o código XAML durante uma sessão de depuração, consulte Escrever e depurar código XAML em execução com XAML Hot Reload.
Inspecione variáveis com dicas de dados
Agora que você sabe um pouco como se locomover, tem uma boa oportunidade de começar a inspecionar o estado do aplicativo (variáveis) com o depurador. Recursos que permitem inspecionar variáveis são alguns dos recursos mais úteis do depurador, e há diferentes maneiras de fazê-lo. Muitas vezes, quando você tenta depurar um problema, você está tentando descobrir se as variáveis estão armazenando os valores que você espera que eles tenham em um determinado estado do aplicativo. Para obter informações detalhadas sobre como usar dicas de dados, consulte Exibir valores de dados em dicas de dados.
Enquanto pausado no depurador, passe o mouse sobre um objeto e você verá seu valor ou seu valor de propriedade padrão.
Se a variável tiver propriedades, você poderá expandir o objeto para ver todas as suas propriedades.
Muitas vezes, ao depurar, você quer uma maneira rápida de verificar valores de propriedade em objetos, e as dicas de dados são uma boa maneira de fazê-lo.
Inspecione variáveis com as janelas Autos e Locais
Na janela Autos, é possível ver variáveis junto com o seu valor atual e o 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 quanto ao comportamento específico do idioma). Para obter mais informações sobre como usar essas janelas, consulte Inspecionar variáveis nas janelas Automáticos e Locais.
Durante a depuração, observe a janela Autos na parte inferior do editor de código.
Observação
Em JavaScript, a janela Locals é suportada, mas não a janela Autos.
Em seguida, olhe para a janela Locais. A janela Locais mostra as variáveis que estão atualmente no escopo.
Neste exemplo, o objeto this
e o objeto f
estão no escopo. Para obter mais informações, consulte Inspecionar Variáveis nas Janelas de Auto e Locais.
Exibir valores de retorno de chamadas de método
No código .NET e C++, pode-se examinar os valores de retorno na janela Autos ao passar ou sair de uma chamada de método, o que pode ser útil quando o valor de retorno não é guardado em uma variável local. Para obter mais informações, consulte Exibir valores de retorno de chamadas de método.
A partir do Visual Studio 2022 versão 17.12 Preview 3, você também pode exibir valores de retorno de chamadas de método em linha e não apenas na janela Autos.
Com o Copilot ativado, você também pode obter assistência direcionada relacionada ao valor de retorno em linha usando o botão Perguntar Copilot que aparece na dica de dados para o valor de retorno.
Definir um relógio
Você pode usar uma janela de observação para especificar uma variável (ou uma expressão) que deseja monitorar. Para obter informações detalhadas, consulte Definir um relógio usando o Watch e o QuickWatch Windows.
Durante a depuração, clique com o botão direito do mouse em um objeto e escolha Adicionar à observação.
Neste exemplo, tem um observador no objeto e pode ver a sua mudança de valor à medida que navega pelo depurador. Ao contrário das outras janelas de variáveis, as janelas do Watch mostram sempre as variáveis que está a observar, quando estão fora do escopo, elas ficam acinzentadas.
Examine a pilha de chamadas
A janela Call Stack mostra a ordem em que os métodos e funções estão sendo chamados. A linha superior mostra a função atual. A segunda linha mostra a função ou propriedade a partir da qual 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, consulte Como examinar a pilha de chamadas.
Observação
A janela Call Stack é semelhante à perspetiva Debug em alguns IDEs como o Eclipse.
Clique na janela Pilha de Chamadas enquanto estiver a depurar, a qual, por padrão, está aberta no painel inferior direito.
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 avançar o progresso do depurador.
Você também pode usar os menus do botão direito do mouse na janela da pilha de chamadas do para fazer outras coisas. Por exemplo, você pode inserir pontos de interrupção em funções específicas, reiniciar seu aplicativo usando Executar para Cursore 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.
Neste exemplo, o Auxiliar de Exceção mostra-lhe uma exceção System.NullReferenceException
e uma mensagem de erro indicando que a referência do objeto não está associada a uma instância do objeto. E nos diz que o valor da cadeia de caracteres era nulo quando você tentou chamar o método Trim
.
Neste exemplo, o Auxiliar de Exceção mostra uma exceção System.Argument
e uma mensagem de erro informando que o caminho não é uma forma legal. Assim, sabemos que o erro ocorreu em um argumento de método ou 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 um relógio 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 e ferramentas de depuração.
Expanda o nó Configurações de exceção para ver mais opções sobre como lidar com esse tipo de exceção, mas você não precisa alterar nada para este passeio!
Dica
Se tiveres Copilot, poderás obter assistência de IA enquanto estiveres a depurar exceções. Basta procurar o Ask Copilot botão. Para obter mais informações, consulte Debug with Copilot.
Obtenha assistência de IA
Se tiveres Copilot, podes obter assistência de IA enquanto estás a fazer depuração. Para obter mais informações, consulte Debug with Copilot. Durante a depuração, você também pode procurar o Ask Copilot botão. Nesses cenários, o Copilot já conhece o contexto para suas perguntas, então você não precisa fornecer contexto no bate-papo do Copilot.
Configurar depuração
Você pode configurar seu projeto para criar como um de 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 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 para passar 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 no separador Build ou Debug, dependendo do tipo específico de projeto.
A partir do Visual Studio 2022, a guia Debug para projetos .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.
Depurar aplicações ASP.NET em tempo real no Serviço de Aplicações do Azure
Para depurar no Serviço de Aplicativo do Azure, consulte Depurar aplicativos do Azure.
Para o Visual Studio Enterprise (apenas), o Depurador de Instantâneo do tira um instantâneo das suas aplicações em produção quando o código no qual está interessado for executado. Para instruir o depurador a tirar um instantâneo, defina pontos de captura e pontos de registo no seu código. O depurador permite que você veja exatamente o que deu errado, sem afetar o tráfego do seu aplicativo de produção. O Depurador de Snapshot pode ajudá-lo a reduzir drasticamente o tempo necessário para resolver problemas que ocorrem em ambientes de produção.
A coleta de instantâneos está disponível para aplicativos ASP.NET em execução no Serviço de Aplicações do Azure. ASP.NET aplicativos devem estar sendo executados no .NET Framework 4.6.1 ou posterior e os aplicativos ASP.NET Core devem estar sendo executados no .NET Core 2.0 ou posterior no Windows.
Para obter mais informações, consulte como depurar aplicações ASP.NET em tempo real usando o Snapshot Debugger.
Exibir instantâneos com o IntelliTrace step-back (Visual Studio Enterprise)
passo atrás do IntelliTrace tira automaticamente um instantâneo do seu aplicativo em cada ponto de interrupção e evento da etapa do depurador. Os instantâneos gravados permitem que você volte aos pontos de interrupção ou etapas anteriores e visualize o estado do aplicativo como era no passado. O retrocesso do IntelliTrace pode poupar-te tempo quando pretendes ver o estado anterior da aplicação, mas não queres reiniciar a depuração ou recriar o estado desejado da aplicação.
Você pode navegar e visualizar instantâneos usando os botões Retroceder e Avançar na barra de ferramentas de depuração. Esses botões navegam pelos eventos que aparecem na aba Eventos na janela Ferramentas de Diagnóstico.
Para obter mais informações, consulte a página Inspecionar estados de aplicativos anteriores usando o IntelliTrace.
Depurar problemas de desempenho
Se o seu aplicativo for executado muito lentamente ou usar muita memória, talvez seja necessário testá-lo com as ferramentas de criação de perfil logo no início. Para obter mais informações sobre ferramentas de análise de desempenho, como a ferramenta Uso da CPU e o Analisador de Memória, consulte Primeira Olhada nas Ferramentas de Análise de Desempenho.
Conteúdo relacionado
Neste tutorial, você deu uma olhada rápida em muitos recursos do depurador. Você pode querer uma visão mais aprofundada de uma destas funcionalidades, como pontos de paragem.