Navegar pelo código usando o depurador do Visual Studio
O depurador do Visual Studio pode ajudá-lo a navegar pelo código para inspecionar o estado de um aplicativo e visualizar o seu fluxo de execução, que também é conhecido como passo a passo do código. Você pode usar atalhos de teclado, comandos de depuração, pontos de interrupção e outros recursos para chegar rapidamente ao código que deseja examinar. Ao se familiarizar com os comandos e atalhos de navegação do depurador, você pode encontrar e resolver problemas de aplicativos com mais rapidez e facilidade. Para obter uma lista dos atalhos de teclado mais comuns relacionados à navegação e depuração de código, consulte a seção Debug em Atalhos de teclado.
Observação
Se é novo na depuração de código, talvez queira ler Depuração para Iniciantes Absolutos e Técnicas e Ferramentas de Depuração antes de ler este artigo.
Inicie a depuração e entre no modo de pausa
Alguns comandos de navegação iniciam a sua aplicação e anexam automaticamente o depurador. A sua aplicação pausa numa linha específica de código com base no comando usado para iniciar a navegação, e entra no modo de interrupção (ou seja, a sua aplicação está pausada no depurador).
No modo de interrupção, a execução do aplicativo é suspensa enquanto funções, variáveis e objetos permanecem na memória. Quando o depurador está no modo de interrupção, você pode navegar pelo código. Há duas maneiras muito comuns de entrar rapidamente no modo de interrupção:
Defina um ponto de interrupção e inicie seu aplicativo.
Executar para um local ou função específica.
Por exemplo, no editor de código no Visual Studio, pode usar o comando Run To Cursor para iniciar a aplicação, com o depurador associado, e entrar no modo de interrupção. Em seguida, você pode usar comandos step para navegar pelo código.
Os comandos de de revisão de código podem ser usados para iniciar seu aplicativo, mas são mais comumente usados depois que você entra no modo de interrupção.
Navegar no código enquanto estiver no modo de pausa
Alguns comandos de navegação são usados principalmente durante o modo de interrupção (ou seja, enquanto você está pausado no depurador).
Os comandos de de revisão de código são mais comumente usados no modo de interrupção.
Alguns comandos como Executar para clicar só podem ser usados no modo de interrupção.
Modo de depuração e interrupção
Quando você está no modo de interrupção, você pode usar vários comandos para navegar pelo código. Você pode examinar os valores das variáveis para procurar violações ou bugs. Para alguns tipos de projeto, você também pode fazer ajustes no aplicativo quando estiver no modo de interrupção.
A maioria das janelas do depurador, como as janelas Modules e Watch, estão disponíveis apenas quando o depurador está conectado ao seu aplicativo. Alguns recursos do depurador, como a visualização de valores de variáveis na janela Locals ou a avaliação de expressões na janela de observação Watch, estão disponíveis somente quando o depurador está pausado (ou seja, no modo de pausa).
Observação
Se você quebrar o código que não tem arquivos de origem ou símbolo (.pdb) carregados, o depurador exibirá uma página Arquivos de origem não encontrados ou Símbolos não encontrados que pode ajudá-lo a localizar e carregar os arquivos. Consulte Especificar símbolo (.pdb) e ficheiros de origem. Se não for possível carregar os símbolos ou ficheiros de origem, poderá ainda depurar as instruções de montagem na janela Desmontagem.
Revisão de código
de execução passo a passo do código refere-se à execução do código do aplicativo uma instrução de cada vez, com o depurador ligado. Os comandos da etapa do depurador ajudam você a observar os efeitos de cada instrução e descobrir mais sobre seu fluxo de execução.
Entre no código
Para parar em cada instrução quando estiver depurando, utilize Depurar>Passo a Passo, ou selecione F11.
O depurador percorre instruções de código, não linhas físicas. Por exemplo, uma cláusula if
pode ser escrita em uma linha:
Mas quando você entra nessa linha, o depurador trata a condição como uma etapa e a consequência como outra. No exemplo anterior, a condição é verdadeira.
Em uma chamada de função aninhada, Step Into entra na função mais profundamente aninhada. Por exemplo, se utilizares Step Into numa chamada como Func1(Func2())
, o depurador entra na função Func2
.
Dica
Ao executar cada linha de código, você pode passar o mouse sobre as variáveis para ver seus valores ou usar as janelas Locals e Watch para observar a alteração dos valores. Você também pode rastrear visualmente a pilha de chamadas à medida que entra em funções. (Somente para Visual Studio Enterprise, consulte Map métodos na pilha de chamadas ao depurar.)
Percorra o código e ignore algumas funções
Você pode não se importar com uma função quando estiver depurando. Ou talvez você saiba que alguns códigos funcionam, como códigos de biblioteca bem testados. Você pode usar os comandos a seguir para ignorar o código quando estiver fazendo uma revisão de código. As funções ainda são executadas, mas o depurador ignora-as.
Comando Teclado | Comando do menu Depurar | Descrição |
---|---|---|
F10 | passo sobre | Se a linha atual contiver uma chamada de função, Step Over executa o código e, em seguida, suspende a execução na primeira linha de código após o retorno da função chamada. |
Shift+F11 | Saia | Step Out continua a executar o código e suspende a execução até que a função atual retorne. O depurador ignora a função atual. |
Ir para um local ou função específica.
Você pode preferir executar diretamente em um local ou função específica quando souber exatamente qual código deseja inspecionar ou se souber onde deseja começar a depuração.
- Definir um ponto de interrupção é melhor se você acha que pode querer reutilizar o ponto de interrupção.
- Outros métodos são para conveniência e são semelhantes à definição de um ponto de interrupção temporário.
Executar até um ponto de interrupção no código
Para definir um ponto de interrupção simples em seu código, selecione a margem mais à esquerda ao lado da linha de código onde você deseja suspender a execução. Você também pode selecionar a linha e, em seguida, selecionar F9, selecionar Depurar>Ativar/desativar ponto de interrupçãoou clicar com o botão direito para selecionar Ponto de interrupção>Inserir ponto de interrupção. O ponto de interrupção aparece como um ponto vermelho na margem esquerda ao lado da linha de código. O depurador suspende a execução imediatamente antes da linha ser executada.
Pontos de interrupção no Visual Studio fornecem um conjunto avançado de funcionalidades, como pontos de interrupção condicionais e pontos de rastreamento. Para obter detalhes, consulte Usando pontos de interrupção.
Executar para um ponto de interrupção de função
Você pode definir o depurador para ser executado até que ele atinja uma função especificada. Você pode especificar a função pelo nome ou pode escolhê-la na pilha de chamadas.
Para especificar um ponto de interrupção de função pelo nome:
Selecione Depurar>Novo Ponto de Interrupção>Ponto de Interrupção de Função.
Na caixa de diálogo New Function Breakpoint, digite o nome da função e selecione seu idioma:
Selecione OK.
Se a função estiver sobrecarregada ou em mais de um namespace, poderá escolher a desejada na janela Pontos de interrupção:
Para selecionar um ponto de interrupção de função na pilha de chamadas:
Durante a depuração, abra a janela Call Stack selecionando Debug>Windows>Call Stack.
Na janela da pilha de chamadas, clique com o botão direito do mouse em uma função e selecione Executar até ao cursorou selecione Ctrl+F10.
Para obter informações sobre como rastrear visualmente a pilha de chamadas, veja Mapeamento de métodos na pilha de chamadas durante a depuração.
Ir para a posição do cursor
Para executar até à localização do cursor, no código-fonte ou na janela Pilha de Chamadas, selecione a linha em que pretende interromper e, em seguida, clique com o botão direito do rato e selecione Executar até o Cursor, ou selecione Ctrl+F10. Selecionar Correr até ao Cursor é semelhante a definir um ponto de interrupção temporário .
Forçar execução para o local do cursor
Para executar até à localização do cursor, no código-fonte ou na janela da pilha de chamadas, selecione a linha em que pretende interromper e, em seguida, clique com o botão direito do rato e selecione Forçar Executar ao Cursor. Selecionar Forçar Execução ao Cursor ignorará quaisquer pontos de interrupção e exceções de primeira chance até que o depurador atinja a linha de código onde o cursor está localizado.
Executar para clicar
Enquanto o depurador está pausado, você pode passar o mouse sobre uma instrução no código-fonte ou na janela Desmontagem e selecionar a execução Executar para aqui seta verde. Usar Executar para clicar é semelhante a definir um ponto de interrupção temporário .
Observação
Executar para clicar está disponível a partir do Visual Studio 2017.
Forçar execução por clique
Enquanto o depurador está pausado, você pode passar o mouse sobre uma instrução no código-fonte enquanto pressiona a tecla Shift e, em seguida, selecionar Forçar execução para aqui (a seta verde dupla). Quando você escolhe essa opção, o aplicativo anexa o depurador do Visual Studio e pausa no local do cursor. Quaisquer pontos de interrupção e exceções de primeira chance encontrados durante a execução são temporariamente desativados.
Observação
Force Run to Click está disponível a partir do Visual Studio 2022.
Inserir manualmente um ponto de interrupção no código
Para entrar na próxima linha de código disponível em um aplicativo em execução, selecione Depurar>Quebrar todas asou selecione Ctrl+Alt+Quebrar.
Depurar código que não é do utilizador
Por padrão, o depurador tenta depurar apenas o código do aplicativo habilitando uma configuração chamada Just My Code. Para obter detalhes sobre como esse recurso funciona para vários tipos e idiomas de projeto e como você pode personalizá-lo, consulte Just My Code.
Para examinar o código da estrutura, o código da biblioteca de terceiros ou as chamadas do sistema durante a depuração, você pode desativar Just My Code. No Ferramentas (ou Depurar) >Opções>de Depuração, desmarque a caixa de seleção Ativar Apenas Meu Código. Quando Just My Code está desativado, o código não-usuário aparece nas janelas do depurador, e o depurador pode entrar no código não-usuário.
Observação
Just My Code não é suportado para projetos de dispositivos.
Depurar código do sistema
Se carregaste símbolos de depuração para o código do sistema Microsoft e desativaste o "Just My Code", podes executar uma chamada de sistema assim como qualquer outra chamada.
A partir do Visual Studio 2022 versão 17.7, você pode autodescompilar o código .NET ao entrar em código externo sem a necessidade de carregar manualmente símbolos de depuração. Para obter mais informações, consulte Gerar código-fonte de assemblies .NET ao depurar.
Para saber mais sobre como carregar símbolos da Microsoft, consulte Configurar local de arquivos de símbolos e opções de carregamento.
Para carregar símbolos para um componente específico do sistema:
Durante a depuração, abra a janela Módulos selecionando Depurar>Windows>Módulos ou pressionando Ctrl+Alt+U.
Na janela Módulos, pode saber quais são os módulos que têm símbolos carregados na coluna Status do Símbolo. Clique com o botão direito do rato no módulo para o qual pretende carregar símbolos e, em seguida, selecione Carregar Símbolos.
Explore propriedades e operadores no código gerenciado
O depurador ignora propriedades e operadores no código gerido por padrão. Na maioria dos casos, esse comportamento fornece uma melhor experiência de depuração. Para habilitar a entrada em propriedades ou operadores, selecione Opções de depuração>. Na página Depuração> Geral, desmarque a caixa de seleção Passo sobre propriedades e operadores (somente gerenciado).
Mover o ponteiro para alterar o fluxo de execução
Você pode alterar a próxima instrução que será executada movendo o ponteiro de execução amarelo. Você pode usar esse recurso enquanto estiver no modo de interrupção.
Este é um recurso avançado de depurador. Para obter mais informações, consulte Mover o ponteiro de execução.