Movimiento del puntero de ejecución para cambiar el flujo de ejecución en el depurador
Durante la depuración, el puntero de ejecución se puede mover manualmente para cambiar cuál va a ser la siguiente instrucción que se va ejecutar. Mover el puntero es útil en situaciones en las que hay que omitir código que contiene un error conocido, y es una característica más avanzada del depurador.
Cambio del flujo de ejecución
Cuando el depurador está en pausa, una flecha amarilla en el margen de una ventana de código fuente o de Desensamblado indica la ubicación de la siguiente instrucción que se ejecutará. Puede cambiar la siguiente instrucción que se ejecutará moviendo esta flecha. Puede omitir el código o volver a una línea anterior.
Si quiere cambiar la siguiente instrucción que se ejecutará, el depurador debe estar en modo de interrupción. En el código fuente o la ventana Desensamblado, arrastre la flecha amarilla a otra línea o haga clic con el botón derecho en la línea que quiera ejecutar a continuación y seleccione Establecer la instrucción siguiente.
El contador del programa salta directamente a la nueva ubicación. No se ejecutan las instrucciones entre los puntos de ejecución anteriores y nuevos. Pero si mueve el punto de ejecución hacia atrás, no se deshacen las instrucciones intermedias.
Precaución
- Mover la siguiente instrucción a otra función o ámbito suele provocar daños en la pila de llamadas, lo que provoca un error o una excepción en el entorno de ejecución. Si intenta mover la siguiente instrucción a otro ámbito, el depurador le da una advertencia y la opción de cancelar la operación.
- En Visual Basic, no puede mover la siguiente instrucción a otro ámbito o función.
- En C++ nativo, si las comprobaciones en el entorno de ejecución están habilitadas, se puede producir una excepción al establecer la siguiente instrucción cuando la ejecución llegue al final del método.
- Cuando la opción Editar y continuar está habilitada, Establecer la instrucción siguiente genera un error si se realizaron modificaciones que Editar y continuar no puede reasignar de forma inmediata. Esta situación puede producirse, por ejemplo, si ha editado código en un bloque catch. Cuando ocurra, aparecerá un mensaje de error que indica que no se puede realizar la operación.
- En código administrado, no puede mover la siguiente instrucción si:
- La instrucción siguiente está en un método diferente de la instrucción actual.
- La depuración se inició mediante la depuración Just-In-Time.
- Un desenredo de la pila de llamadas está en curso.
- Se ha producido una excepción System.StackOverflowException o System.Threading.ThreadAbortException.