Iniciar, interromper, avançar, executar código e parar depuração no Visual Studio

Inicie a depuração de um projeto do Visual Studio; anexe a um processo; divida o código; repasse o código; execute até o cursor; execute até uma função na pilha de chamadas; defina a próxima instrução; repasse o Just My Code; Pare a depuração e reinicie-a; desanexe de um processo depurado.

Conteúdo

Start debugging a VS project; attach to a process

Break into code, step or run through code, set the next statement to execute

Stop, restart debugging; detach from the debugged process

Iniciar a depuração de um projeto do VS; anexar a um processo

  • Start debugging a VS project**|**Attach to a process

Iniciar a depuração de um projeto VS

Quando uma solução é aberta no Visual Studio, existem três opções para iniciar a depuração:

Escolha Depurar, Iniciar depuração (teclado: F5).

Seu aplicativo é iniciado e executado até:

  • O depurador atinge um ponto de interrupção.

  • Escolha Parar Depuração no menu Depurar.

  • Uma exceção é gerada.

  • O aplicativo é encerrado.

Escolha Depurar, Depuração Completa (teclado: F11) ou Depurar, Depuração Parcial (teclado: F10).

Seu aplicativo é iniciado e para na primeira linha.

Em uma janela de origem, selecione uma linha de código executável e escolha Executar até o Cursor no menu de contexto.

Seu aplicativo é iniciado e executado até que atinge um ponto de interrupção ou o local do cursor, o que ocorrer primeiro.

Para monitorar visualmente a execução do seu código em um mapa de código durante a depuração, consulte Mapear métodos na pilha de chamadas ao depurar no Visual Studio.

Voltar ao inícioContents | Start debugging a VS project; attach to a process

Anexar a um processo

O depurador também pode anexar a um programa que está sendo executado em um processo fora do Visual Studio. Após vincular-se a um programa, você poderá usar comandos de execução do depurador, inspecionar o estado do programa e assim por diante. A capacidade de inspecionar o programa pode ser limitada se o programa foi criado com informações de depuração, se você tem acesso ao código-fonte do programa, e se o compilador just-in-time (JIT) do Common Language Runtime está controlando as informações de depuração.

Para anexar a um processo que está executando em seu computador local

Escolha Depurar, Anexar ao Processo. Na caixa de diálogo Anexar ao Processo, selecione o processo da lista de Processos Disponíveis e, em seguida, escolha Anexar.

Caixa de diálogo Anexar ao Processo

Consulte Anexar aos processos em execução com o Depurador do Visual Studio para obter mais informações.

Voltar ao inícioContents | Start debugging a VS project; attach to a process

Entrar no código, depurar ou executar o código, definir a próxima instrução a ser executada

  • Break into code by using breakpoints or Break All**|Step into, over, or out of the code|Run to a specified location or function|Set the next statement to execute|Restrict stepping to Just My Code|Step into system calls|**Step into properties and operators in managed code

Entre no código usando pontos de interrupção ou Interromper Tudo

Quando você está depurando um aplicativo com o depurador VS, seu aplicativo está executando (em execução) ou está no modo de interrupção.

O depurador interrompe a execução do aplicativo quando a execução atinge um ponto de interrupção ou quando ocorre uma exceção. Também é possível interromper a execução manualmente a qualquer momento.

Um ponto de interrupção é um sinal que instrui o depurador para suspender temporariamente a execução do seu aplicativo em algum ponto. Quando a execução é suspensa em um ponto de interrupção, seu programa fica no modo de interrupção. Entrar no modo de interrupção não para ou não termina a execução do programa; a execução pode ser retomada a qualquer momento.

A maioria dos recursos do depurador, como exibir os valores de variáveis na janela Locais ou a avaliar expressões na janela Observação, estão disponíveis somente no modo de interrupção. Todos os elementos do seu aplicativo permanecem (as funções, variáveis, e objetos permanecem na memória, por exemplo), mas seus movimentos e atividades são suspensos. Durante o modo de interrupção, você pode examinar as posições e os estados dos elementos para procurar violações ou bugs. Você também pode fazer ajustes no aplicativo durante o modo de interrupção

É possível configurar pontos de interrupção para suspender a execução com base em um número de condições. Consulte Pontos de interrupção: usar contagens de ocorrências, funções da pilha de chamadas e condições para interromper quando e onde você quiser no Depurador do Microsoft Visual Studio. Esta seção descreve duas maneiras básicas de entrar no código.

Definir pontos de interrupção no código

Para definir um ponto de interrupção simples em seu código, abra o arquivo de origem no editor do Visual Studio. Defina o cursor na linha de código em que você deseja quebrar e escolha Ponto de Interrupção, Inserir Ponto de Interrupção no menu de contexto (teclado: F9. O depurador interrompe a execução right da execução da linha.

Definir um ponto de interrupção

Os pontos de interrupção no Visual Studio fornecem um conjunto rico de funcionalidades adicionais, como pontos de interrupção e pontos de monitoramento condicionais. Consulte Pontos de interrupção: usar contagens de ocorrências, funções da pilha de chamadas e condições para interromper quando e onde você quiser no Depurador do Microsoft Visual Studio.

Interromper manualmente o código

Para dividir na linha de código a seguir disponível em um aplicativo executando, escolha Depurar, Interromper Tudo (teclado: Ctrl+Alt+Break).

  • Se você estiver depurando com a opção Just My Code ativada, você interromperá na linha de código seguinte em seu projeto. Consulte Restrict stepping to Just My Code.

  • Se você estiver depurando vários programas, um ponto de interrupção ou comando Interromper Tudo afetará todos os programas que estão sendo depurado por padrão. Consulte Configure the execution behavior of multiple processes.

  • Se você interromper durante a execução do código sem os arquivos correspondentes de origem ou de símbolo (.pdf), o depurador exibirá Arquivos de origem não encontrados ou uma página de Símbolos não encontrados que pode ajudá-lo a encontrar os arquivos apropriados. Consulte Especificar arquivos de símbolo (.pdb) e de origem no Depurador do Visual Studio.

    Se não for possível acessar os arquivos de suporte, você ainda poderá depurar as instruções de assembly na janela de desmontagem.

Voltar ao inícioContents | Break into code, step or run through code, set the next statement to execute

Entrar ou sair do código

Um dos procedimentos de depuração mais comuns é a depuração parcial. Fazer isso passo a passo é executar o código uma linha por vez. Ao paralisar a execução, como a execução do depurador a um ponto de interrupção, você pode usar três comandos de menu de Depurar para percorrer o código:

Menu Comando

Atalho de teclado

Descrição

Entrar em

F11

Se a linha contiver uma chamada de função, a Depuração Completa executará somente a chamada em si, em seguida, parará na primeira linha do código dentro da função. Caso contrário, a Depuração Completa executa a próxima instrução.

Depuração Parcial

F10

Se a linha contiver uma chamada de função, a Depuração Parcial executará a função chamada, em seguida, parará na primeira linha do código dentro da função de chamada. Caso contrário, a Depuração Completa executa a próxima instrução.

Depuração Circular

Shift+F11

Depuração Circular retoma a execução do seu código até que a função retorne, então divide no ponto da função de chamada.

  • Em uma chamada de função aninhada, a Depuração Completa entra na função aninhada mais profunda. Se você usar a Depuração Completa em um chamada como Func1(Func2()), o depurador entrará na função Func2.

  • O depurador avança realmente com as instruções de código em vez de linhas físicas. Por exemplo, uma cláusula if pode ser gravada em uma linha:

    int x = 42;
    string s = "Not answered";
    if( int x == 42) s = "Answered!";
    
    Dim x As Integet = 42
    Dim s As String = "Not answered"
    If x = 42 Then s = "Answered!"
    

    Quando você entra nessa linha, o depurador trata a condição como uma etapa e a consequência como outra (nesse exemplo, a condição é verdadeira.)

Para rastrear visualmente a pilha de chamadas para entrar em funções, consulte Mapear métodos na pilha de chamadas ao depurar no Visual Studio.

Voltar ao inícioContents | Break into code, step or run through code, set the next statement to execute

Executar para um local ou a uma função especificada.

Às vezes você desejará executar em algum ponto no código e parar a execução. Se você tiver um ponto de interrupção definido no local onde você deseja fazer a interrupção, escolha Depurar, Iniciar Depuração, se você não tiver iniciado a depuração, ou Depurar, Continuar. (Em ambos os casos, F5 é a tecla de atalho). O depurador para no próximo ponto de interrupção na execução do código. Escolha Depurar, Continuar até chegar ao ponto de interrupção desejado.

Você também pode executar onde você colocou o cursor no editor de códigos ou executar a função especificada.

Executar até o local do cursor

Para executar a localização do cursos, coloque o cursor em uma linha executável do código em uma janela de origem. No menu de contexto do editor, escolha Executar até o Cursor.

Executar a uma função na pilha de chamadas.

Na janela Pilha de Chamadas, selecione a função e, em seguida, escolha Executar até o Cursor no menu de contexto. Para rastrear visualmente a pilha de chamadas, consulte Mapear métodos na pilha de chamadas ao depurar no Visual Studio.

Executar numa função especificada pelo nome

É possível executar o comando do depurador para executar o aplicativo até atingir uma função especificada. É possível especificar a função por nome ou escolhê-la da pilha de chamadas.

Para especificar uma função por nome, escolha Depurar, Novo Ponto de Interrupção, Interromper na Função e insira o nome da função de outras informações de identificação.

Caixa de diálogo Novo ponto de interrupção

Se a função estiver sobrecarregada ou estiver em vários namespaces, você poderá escolher as funções que você deseja na caixa de diálogo Escolher Pontos de Interrupção.

Caixa de diálogo Escolher Pontos de Interrupção

Voltar ao inícioContents | Break into code, step or run through code, set the next statement to execute

Defina a próxima instrução a ser executada

Após interromper o depurador, você poderá mover o ponto de execução para definir a próxima instrução de código a ser executada. Uma seta amarela na margem de uma fonte ou janela de desmontagem marca o local da próxima instrução a ser executada. Movendo essa seta, você pode ignorar uma parte do código ou retornar a uma linha executada anteriormente. É possível usar esse procedimento para situações como ignorar uma seção de código que contém um bug conhecido.

Exemplo 2

Para definir a instrução a ser executada, use um destes procedimentos:

  • Em uma janela de origem, arraste a seta amarela para um local onde você deseja definir a instrução seguinte no mesmo arquivo de origem

  • Em uma janela de origem, coloque o cursor na linha que você deseja executar em seguida e escolha Definir Próxima Instrução no menu de contexto.

  • Em uma janela de desmontagem, coloque o cursor na instrução de montagem que você deseja executar em seguida e escolha Definir Próxima Instrução no menu de contexto.

Aviso

Definir a instrução a seguir faz com que o contador do programa pule diretamente para a nova localização.Use este comando com cuidado:

  • As instruções entre os pontos de execução antigos e novos não são executadas.

  • Se você mover o ponto de execução para trás, as instruções intervenientes não serão desfeitas.

  • Mover a instrução seguinte para outra função ou escopo normalmente resulta em danos à pilha de chamadas, causando um erro em tempo de execução ou uma exceção.Se você tentar mover a instrução seguinte para outro escopo, o depurador abrirá uma caixa de diálogo com um aviso e dará uma chance de cancelar a operação.No Visual Basic, você não pode mover a instrução seguinte para outro escopo ou função.

  • No C++ nativo, se você tiver as verificações de tempo de execução ativadas, definir a instrução seguinte poderá fazer com que uma exceção seja gerada quando a execução chegar ao final do método.

  • Quando a opção Editar e Continuar está ativada, Definir Próxima Instrução falha, caso você tenha feito edições que Editar e Continuar não pode remapear imediatamente.Isso pode ocorrer, por exemplo, se você editou o código dentro de um bloco catch.Quando isso acontece.Você verá uma mensagem de erro que informa que a operação não é suportada.

Dica

No código gerenciado, você não pode mover a instrução seguinte nas seguintes circunstâncias:

  • A instrução a seguir é um método diferente do que a instrução atual.

  • A depuração foi iniciada com a depuração Just-In-Time.

  • Um desenrolamento de pilha de chamada está em andamento.

  • Uma exceção System.StackOverflowException ou System.Threading.ThreadAbortException foi lançada.

Não é possível definir a próxima instrução durante a execução ativa do seu aplicativo. Para definir a próxima instrução, o depurador deve estar no modo de interrupção.

Voltar ao inícioContents | Break into code, step or run through code, set the next statement to execute

Restringir o passo ao Just My Code

Às vezes, quando você está depurando, pode ser necessário examinar o código que escreveu e ignorar outro código, como chamadas do sistema. É possível fazer isso com a depuração Apenas Meu Código. Apenas Meu Código oculta o código de não usuário para que não apareça nas janelas do depurador. Quando você inspeciona, o depurador percorre todos os códigos de não usuário, mas não para neles. Consulte Apenas Meu Código

Dica

Apenas Meu Código não é suportada para projetos de dispositivo.

Voltar ao inícioContents | Break into code, step or run through code, set the next statement to execute

Chamadas de entrada no sistema

Se você tiver carregado símbolos de depuração para o código do sistema e JIT (Just My Code) não estiver ativado, você poderá entrar em uma chamada do sistema assim como em qualquer outra.

Para aprender como desabilitar Apenas Meu Código, consulte Restrict stepping to Just My Code

Para acessar os arquivos de símbolos da Microsoft, consulte Use symbol servers to find symbol files not on your local machine no tópico Especificar arquivos de símbolo (.pdb) e de origem no Depurador do Visual Studio.

Para carregar símbolos para um componente do sistema específico enquanto você depura:

  1. Abra a janela de módulos (teclado: Ctrl+Alt+U).

  2. Selecione o módulo para os quais você deseja carregar os símbolos.

    Você pode informar quais módulos possuem símbolos carregados olhando para a coluna Status do Símbolo.

  3. Escolha Carregar Símbolos no menu de contexto.

Voltar ao inícioContents | Break into code, step or run through code, set the next statement to execute

Entrar em propriedades e operadores no código gerenciado

O depurador considera propriedades e operadores no código gerenciado por padrão. Na maioria dos casos, isso proporciona uma melhor experiência de depuração. Para ativar o avançar para propriedades ou operadores, escolha Depurar, Opções e Configurações. Na página Depuração, Geral, desmarque a caixa de seleção Depurar parcialmente propriedades e operadores (Somente gerenciado)

Voltar ao inícioContents | Break into code, step or run through code, set the next statement to execute

Parar, reiniciar depuração; desanexar do processo depurado

Parar a depuração significa finalizar a sessão de depuração. Parar a execução significa finalizar o processo que você está depurando e finalizar a sessão de depuração. Isso não deve ser confundido com a interrupção da execução, que para temporariamente a execução do processo que você está depurando sem desativar a sessão de depuração. Desanexar de um processo para a depuração do processo mas o deixa em execução.

  • Stop debugging from VS**|Close the app that is being debugged|Restart debugging|**Detach from the debugged app

Parar depuração do VS

Escolha Depurar, Parar Depuração para encerrar o processo que você está depurando quando o programa tiver sido iniciado no Visual Studio. Se você tiver anexado ao processo em vez de iniciar do Visual Studio, o processo continua a executar.

Voltar ao inícioContents | Stop, restart debugging; detach from the debugged process

Feche o aplicativo que está sendo depurado

Quando você sai de um aplicativo que está sendo depurado, a depuração para automaticamente.

Reiniciar a depuração

Escolha Depurar, Reiniciar para parar a sessão atual de depuração e reiniciar o projeto de inicialização no depurador.

Voltar ao inícioContents | Stop, restart debugging; detach from the debugged process

Desanexar do aplicativo depurado

Escolha Depurar, Desanexar Tudo para parar a depuração, mas deixe o processo ou processos depurados em execução.

Dica

Consulte Anexar aos processos em execução com o Depurador do Visual Studio e Deputar um ou mais processos no Visual Studio para saber mais sobre como controlar vários processos e como anexar a eles com o Visual Studio.

Voltar ao inícioContents | Stop, restart debugging; detach from the debugged process