Partilhar via


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

Durante a depuração, pode mover manualmente o ponteiro de execução para alterar a próxima instrução que será executada a seguir. Mover o ponteiro é útil em situações, como ao saltar código que contém um erro conhecido, e constitui uma funcionalidade mais avançada do depurador.

Alterar o fluxo de execução

Quando o depurador está pausado, uma seta amarela na margem do código-fonte ou da janela de Desmontagem marca a localização da instrução que será executada a seguir. Pode alterar a próxima declaração que será executada deslocando esta seta. Podes saltar código ou voltar a uma linha anterior.

Animação que mostra como mover o apontador.

Se quiseres alterar a próxima instrução que irá executar, o depurador tem de estar em modo de interrupção. No código-fonte ou na janela de Desmontagem , arraste a seta amarela para outra linha, ou clica com o botão direito na linha que queres executar a seguir e seleciona Definir Instrução Próxima.

O contador de programa salta diretamente para a nova localização. As instruções entre os pontos de execução antigo e novo não são executadas. Mas se move o ponto de execução para trás, as instruções intermediárias não são desfeitas.

Atenção

  • Mover a próxima instrução para outra função ou âmbito geralmente causa corrupção da call stack, resultando em um erro ou exceção durante a execução. Se tentares mover a próxima instrução para outro escopo, o depurador dá-te um aviso e uma oportunidade de cancelar a operação.
  • No Visual Basic, não podes mover a próxima instrução para outro escopo ou função.
  • No C++ nativo, se tiveres as verificações de tempo de execução ativadas, definir a próxima instrução pode causar uma exceção quando a execução chegar ao fim do método.
  • Quando Editar e Continuar está ativado, Definir Próxima Instrução falha se tiver feito edições que Editar e Continuar não conseguir remapear imediatamente. Esta situação pode ocorrer, por exemplo, se tiver editado código num bloco de captura. Quando isto acontece, uma mensagem de erro indica que a operação não é suportada.
  • No código gerido, não pode mover a próxima instrução se:
    • A próxima instrução está num método diferente da atual.
    • A depuração foi iniciada pela Just-In-Time Debugging.
    • Está em curso um desmantelamento de stack de chamadas.
    • Uma exceção System.StackOverflowException ou uma exceção System.Threading.ThreadAbortException foi gerada.