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

Definir um ponto de interrupção

Definir um ponto de interrupção

Pressione F5 (Debug > Start Debugging) ou o botão Start 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.

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 em

F11 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 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) 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 até a linha onde o botão é colocado. aparece à 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.

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.

Executar até ao cursor

Executar até ao cursor

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 ReiniciarReiniciar Aplicativo 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 Parar Depuração 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.

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

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

Janela de Automóveis

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

Janela de Variáveis Locais

Janela de Variáveis Locais

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.

Captura de tela mostrando os valores de retorno de chamadas de método.

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.

Captura de ecrã mostrando os valores de retorno dos métodos chamados com o ícone Copilot.

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.

Janela de observação

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

Examine a pilha de chamadas

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

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.

Auxiliar de exceção

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 Copilotcaptura de ecrã do botã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 CopilotCaptura de tela do botã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.

Propriedades do Projeto

Propriedades do Projeto

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.

Inicie o depurador de instantâneo

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.

botões Retroceder e Avançar

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.

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.