Spostare il puntatore di esecuzione per modificare il flusso di esecuzione nel debugger
Durante il debug, è possibile spostare manualmente il puntatore di esecuzione per modificare l'istruzione successiva che verrà eseguita successivamente. Lo spostamento del puntatore è utile per situazioni come ignorare il codice che contiene un bug noto ed è una funzionalità più avanzata del debugger.
Modificare il flusso di esecuzione
Quando il debugger viene sospeso, una freccia gialla nel margine del codice sorgente o della finestra Disassembly contrassegna la posizione dell'istruzione che verrà eseguita successivamente. È possibile modificare l'istruzione successiva che verrà eseguita spostando questa freccia. È possibile ignorare il codice o tornare a una riga precedente.
Se si desidera modificare l'istruzione successiva che verrà eseguita, il debugger deve essere in modalità di interruzione. Nella finestra codice sorgente o Disassembly trascinare la freccia gialla su una riga diversa oppure fare clic con il pulsante destro del mouse sulla riga che si desidera eseguire successivamente e selezionare Imposta istruzione successiva.
Il contatore del programma passa direttamente alla nuova posizione. Le istruzioni tra i punti di esecuzione precedenti e nuovi non vengono eseguite. Tuttavia, se si sposta il punto di esecuzione all'indietro, le istruzioni intermedie non vengono annullate.
Attenzione
- Lo spostamento dell'istruzione successiva in un'altra funzione o ambito provoca in genere il danneggiamento dello stack di chiamate, causando un errore o un'eccezione di runtime. Se si tenta di spostare l'istruzione successiva in un altro ambito, il debugger fornisce un avviso e la possibilità di annullare l'operazione.
- In Visual Basic non è possibile spostare l'istruzione successiva in un altro ambito o funzione.
- In C++ nativo, se sono abilitati i controlli di runtime, l'impostazione dell'istruzione successiva può causare un'eccezione quando l'esecuzione raggiunge la fine del metodo.
- Quando l'opzione Modifica e continuazione è abilitata, l'impostazione dell'istruzione successiva ha esito negativo se sono state apportate modifiche che Modifica e continuazione non possono eseguire immediatamente il mapping. Questa situazione può verificarsi, ad esempio, se il codice è stato modificato in un blocco catch. In questo caso, un messaggio di errore indica che l'operazione non è supportata.
- Nel codice gestito non è possibile spostare l'istruzione successiva se:
- L'istruzione successiva è inclusa in un metodo diverso da quello dell'istruzione corrente.
- Il debug è stato avviato dal debug JIT.
- È in corso la rimozione dello stack di chiamate.
- È stata generata un'eccezione System.StackOverflowException or System.Threading.ThreadAbortException.