Partager via


Déplacer le pointeur d’exécution pour modifier le flux d’exécution dans le débogueur

Lors du débogage, vous pouvez déplacer manuellement le pointeur d’exécution pour modifier l’instruction suivante qui s’exécutera ensuite. Le déplacement du pointeur est utile pour des situations telles que l’ignorer du code qui contient un bogue connu et constitue une fonctionnalité plus avancée du débogueur.

Modifier le flux d’exécution

Lorsque le débogueur est suspendu, une flèche jaune dans la marge du code source ou de la fenêtre Désassembleur marque l’emplacement de l’instruction qui s’exécute ensuite. Vous pouvez modifier l’instruction suivante qui s’exécutera en déplaçant cette flèche. Vous pouvez ignorer le code ou revenir à une ligne précédente.

Animation montrant comment déplacer le pointeur.

Si vous souhaitez modifier l’instruction suivante qui s’exécute, le débogueur doit être en mode arrêt. Dans le code source ou la fenêtre Désassembler , faites glisser la flèche jaune vers une autre ligne, ou cliquez avec le bouton droit sur la ligne que vous souhaitez exécuter en regard, puis sélectionnez Définir l’instruction suivante.

Le compteur de programme passe directement au nouvel emplacement. Les instructions entre le point d'exécution ancien et le nouveau ne sont pas exécutées. Mais si vous déplacez le point d’exécution vers l’arrière, les instructions intermédiaires ne sont pas annulées.

Caution

  • Le déplacement de l’instruction suivante vers une autre fonction ou étendue provoque généralement une altération de la pile des appels, ce qui provoque une erreur ou une exception d’exécution. Si vous essayez de déplacer l’instruction suivante vers une autre étendue, le débogueur vous donne un avertissement et la possibilité d’annuler l’opération.
  • Dans Visual Basic, vous ne pouvez pas déplacer l’instruction suivante vers une autre étendue ou fonction.
  • En C++natif, si vous avez activé les vérifications d’exécution, la définition de l’instruction suivante peut provoquer une exception lorsque l’exécution atteint la fin de la méthode.
  • Lorsque l’option Modifier et Continuer est activée, Définir l'instruction suivante échoue si vous avez apporté des modifications que Modifier et Continuer ne peut pas remapper immédiatement. Cette situation peut se produire, par exemple, si vous avez modifié du code dans un bloc catch. Lorsque cela se produit, un message d’erreur vous indique que l’opération n’est pas prise en charge.
  • Dans le code managé, vous ne pouvez pas déplacer l’instruction suivante si :
    • L’instruction suivante se trouve dans une méthode différente de celle de l’instruction actuelle.
    • Le débogage a été lancé par le débogage Just-In-Time.
    • Un déroulement de la pile des appels est en cours.
    • Une exception System.StackOverflowException ou System.Threading.ThreadAbortException a été levée.