Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo apresenta as ferramentas de depuração fornecidas pelo Visual Studio. No contexto Visual Studio, quando depura a sua app, normalmente significa que está a executar a aplicação com o depurador ligado (isto é, em modo 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 examinar os valores armazenados em variáveis, pode definir inspeções em variáveis para ver quando os valores mudam, pode examinar o caminho de execução do seu código e assim por diante. Se és novo a trabalhar com depuração, talvez queiras ler Depuração para iniciantes absolutos antes de ler este artigo. Se você estiver tentando executar uma tarefa específica e precisar saber qual recurso usar, consulte Localizador de recursos do depurador. Para tentar depuração assistida por IA, veja Debug com Copilot.
As funcionalidades aqui descritas 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.
Talvez você ainda não tenha nenhum ponto de interrupção definido para usar para examinar o código do aplicativo. Depois de definires os pontos de interrupção, ficarás pronto para iniciar 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 o seu código em execução para que possa analisar os valores das variáveis, o comportamento da memória ou se um ramo de código está a ser executado.
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.
Definir um ponto de interrupçãoDefinir um ponto de interrupção
Pressione F5 (Debug Start Debugging) ou o botão Start DebuggingStart DebuggingStart 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.
Edição de código ao vivo
O Visual Studio 2022 suporta edição de código ao vivo durante a depuração. Para obter informações mais pormenorizadas, consulte:
- Escrever e depurar código em execução
- Escrever e depurar código XAML com XAML Hot Reload
- Editar e continuar
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.
F11 entra emF11 entra em
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 de não-usuário (se você quiser mais detalhes, consulte Apenas meu código).
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 desejar alterar a configuração mais tarde, desative a configuração Passar sobre propriedades e operadores no separador Ferramentas Opções em Todas as configuraçõesDepuraçãoGeral.
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 desejar alterar a configuração mais tarde, desative a configuração Passar sobre propriedades e operadores na caixa de diálogo Opções de Ferramentas em DepuraçãoGeral.
Avançar sobre o código para saltar 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 de passo, consulte Navegar no código no depurador.
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.
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 informações acerca deste recurso e funcionalidades de navegação semelhantes, consulte Executar para um local específico no seu código.
Enquanto estiver no depurador, passe o rato sobre uma linha de código até ao botão Run to Click (Run execution to here)
aparece à direita.
Enquanto estiver no depurador, passe o rato sobre uma linha de código até ao botão Run to Click (Run execution to here)
aparece à esquerda.
Observação
O botão Run to Click (Executar até 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.
Executar até ao cursor
Quando estiver editando código (em vez de pausado 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). Este comando inicia a depuração e define um ponto de interrupção temporário na linha de código atual. Para obter mais informações acerca deste recurso e funcionalidades de navegação semelhantes, consulte Executar para um local específico no seu código.
Captura de ecrã que mostra a opção Correr para o cursor.Correr para o Cursor
Executar até ao cursorExecutar até ao cursor
Se você definir 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é ao Cursor na janela Call Stack enquanto está a depurar.
Reinicie seu aplicativo rapidamente
Selecione o botão ReiniciarReiniciar AplicaçãoReiniciar Aplicação na Barra de Ferramentas de Depuração (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 alcançado durante a 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 Parar DepuraçãoParar Depuração em vez de Reiniciar.
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, 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 estiver pausado no depurador, passa o rato sobre um objeto e vê o seu valor ou o seu valor de 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, ao depurar, o utilizador deseja uma forma rápida de verificar valores de propriedade em objetos, e as dicas sobre dados são uma boa forma de o fazer.
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.
Captura de ecrã que mostra a janela de Autos. Janela de Autos
Janela de AutomóveisJanela de Automóveis
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.
Captura de ecrã que mostra a janela dos Locais.Janela de locais
Janela de Variáveis LocaisJanela de Variáveis Locais
Neste exemplo, o objeto e o objeto estão no escopo. Para mais informações, consulte Inspecionar Variáveis nas Janelas de Autos e Locais.
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 informações detalhadas, veja Configurar uma Vigia usando as janelas Watch e QuickWatch.
Durante a depuração, clique com o botão direito do mouse em um objeto e escolha Adicionar à observação.
Captura de ecrã que mostra a janela do relógio.Janela de vigia
Janela de observaçãoJanela de 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 variáveis , as janelas Watch sempre mostram as variáveis que você está assistindo (elas ficam acinzentadas quando fora do escopo).
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.
Selecione a janela Pilha de chamadas enquanto estiver depurando, que, por predefinição, está aberta no painel inferior direito.
Captura de ecrã que mostra a janela do Call Stack. Examine o Call Stack
Examine a pilha de chamadasExamine 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 de contexto com o botão direito do rato na janela da pilha de chamadas para realizar outras ações. 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.
Auxiliar de exceçãoAuxiliar de exceção
Neste exemplo, o Auxiliar de Exceção mostra uma exceção e uma mensagem de erro informando que a referência de objeto não está definida como uma instância do objeto. E nos diz que o valor da cadeia de caracteres era 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 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, podes obter assistência de IA enquanto estás a depurar exceções. Basta procurar o botão Analisar com Copilot
. Para mais informações, consulte Debug com Copilot.
Dica
Se tiveres Copilot, podes obter assistência de IA enquanto estás a depurar exceções. Basta procurar o botão Perguntar Copilot
. Para mais informações, consulte Debug com Copilot.
Obtenha assistência de IA
Se tiveres Copilot, podes obter assistência da IA enquanto estás a depurar. Para mais informações, consulte Debug com Copilot. Durante a depuração, também pode procurar o botão Analisar com Copilot
. Nestes cenários, o Copilot já conhece o contexto das tuas perguntas, por isso não precisas de fornecer contexto tu próprio no chat do Copilot.
Obtenha assistência de IA
Se tiveres Copilot, podes obter assistência da IA enquanto estás a depurar. Para mais informações, consulte Debug com Copilot. Durante a depuração, também pode procurar o botão Ask Copilot
. Nestes cenários, o Copilot já conhece o contexto das tuas perguntas, por isso não precisas de fornecer contexto tu próprio no chat do Copilot.
Configurar depuração
Você pode configurar o seu projeto para compilar como uma configuração de Debug ou Release, configurar propriedades do projeto para depuração, ou configurar 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. Pode aceder às propriedades específicas do projeto clicando com o botão direito no projeto em Explorador de Soluções e selecionando Properties. 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, o separador Debug para projetos .NET fornece um link para a interface dos perfis de início de depuração, onde pode definir propriedades relacionadas com a depuração.
Captura de ecrã que mostra as propriedades do projeto.Propriedades do projeto
A partir do Visual Studio 2022, o separador 'Debug' para projetos de .NET fornece um link para a interface de utilizador dos perfis de início de depuração, onde pode definir propriedades relacionadas com a depuração.
Propriedades do ProjetoPropriedades do Projeto
Debug live ASP.NET apps in Serviço de Aplicações do Azure
Para depurar em Serviço de Aplicações do Azure, veja Debug Azure apps.
Para Visual Studio Enterprise (apenas), o Snapshot Debugger tira um snapshot das suas aplicações em produção quando o código que lhe interessa é 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 coleção de snapshots está disponível para aplicações ASP.NET a correr no Serviço de Aplicações do Azure. As aplicações ASP.NET devem estar a correr no .NET Framework 4.6.1 ou posterior, e as aplicações ASP.NET Core devem estar a correr no .NET Core 2.0 ou posterior no Windows.
Para mais informações, consulte Debug aplicações de ASP.NET ao vivo usando o Snapshot Debugger.
Visualizar instantâneos com a funcionalidade de retrocesso do IntelliTrace (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. Talvez você queira uma visão mais aprofundada de um desses recursos, como pontos de interrupção.
Aprenda a usar pontos de interrupção