Compartilhar via


Mover o ponteiro de execução para alterar o fluxo de execução no depurador

Durante a depuração, você pode mover manualmente o ponteiro de execução para alterar a próxima instrução que será executada em seguida. Mover o ponteiro é útil para situações como ignorar código que contém um bug conhecido e é um recurso mais avançado do depurador.

Alterar o fluxo de execução

Quando o depurador é pausado, uma seta amarela na margem do código-fonte ou da janela Desmontagem marca o local da instrução que será executada em seguida. Você pode alterar a próxima instrução que será executada movendo essa seta. Você pode ignorar o código ou retornar a uma linha anterior.

Animação que mostra como mover o ponteiro.

Se você quiser alterar a próxima instrução que será executada, o depurador deverá estar no modo de interrupção. No código-fonte ou na janela Desmontar, arraste a seta amarela para uma linha diferente ou clique com o botão direito do mouse na linha que você deseja executar em seguida e selecione Definir Próxima Instrução.

O contador do programa salta diretamente para o novo local. As instruções entre os pontos de execução antigos e novos não são executadas. Mas se você mover o ponto de execução para trás, as instruções de intervenção não serão desfeitas.

Cuidado

  • Mover a próxima instrução para outra função ou escopo geralmente causa corrupção na pilha de chamadas, o que resulta em um erro ou exceção de tempo de execução. Se você tentar mover a próxima instrução para outro escopo, o depurador emitirá um aviso e oferecerá uma oportunidade de cancelar a operação.
  • No Visual Basic, você não pode mover a próxima instrução para outro escopo ou função.
  • No C++nativo, se você tiver verificações de runtime habilitadas, definir a próxima instrução poderá causar uma exceção quando a execução atingir o final do método.
  • Quando Editar e Continuar estiver habilitado, Set Next Statement falhará se você tiver feito edições que Editar e Continuar não puder remapear imediatamente. Essa situação pode ocorrer, por exemplo, se você tenha editado o código em um bloco de captura. Quando isso acontece, uma mensagem de erro informa que a operação não tem suporte.
  • No código gerenciado, você não poderá mover a próxima instrução se:
    • A próxima instrução está em um método diferente da instrução atual.
    • A depuração foi iniciada por Just-In-Time Debugging.
    • Um desenrolamento de pilha de chamadas está em andamento.
    • Uma exceção System.StackOverflowException ou System.Threading.ThreadAbortException foi gerada.