Iniciar, interrumpir, recorrer paso por paso y ejecutar procesos a través del código y detener la depuración en Visual Studio

Empezar a depurar un proyecto de VS; asociar a un proceso; interrumpir el código; recorrer el código paso a paso; ejecutar hasta el cursor; ejecutar hasta una función de la pila de llamadas; establecer la siguiente instrucción; recorrer paso a paso Solo mi código; detener y reiniciar la depuración; desasociar un proceso depurado.

Contenido

Start debugging a VS project; attach to a process

Break into code, step or run through code, set the next statement to execute

Stop, restart debugging; detach from the debugged process

Empezar a depurar un proyecto de VS y asociar a un proceso

  • Start debugging a VS project**|**Attach to a process

Empezar a depurar un proyecto de VS

Cuando se abre una solución en Visual Studio, puede comenzar a depurar de tres formas:

Elija Depurar, Iniciar depuración (teclado: F5).

La aplicación se inicia y se ejecuta hasta que:

  • El depurador llega a un punto de interrupción.

  • En el menú Depurar, elija Detener depuración.

  • Se produce una excepción.

  • La aplicación se cierra.

Elija Depurar, Paso a paso por instrucciones (teclado: F11) o Depurar, Paso a paso por procedimientos (teclado: F10).

La aplicación se inicia y se interrumpe en la primera línea.

En una ventana de código fuente, seleccione una línea de código ejecutable y elija Ejecutar hasta el cursor en el menú contextual.

La aplicación se inicia y se ejecuta hasta que encuentra un punto de interrupción o hasta la posición del cursor, lo que encuentre primero.

Para realizar un seguimiento visual de la ejecución del código en un mapa de código durante la depuración, vea Asignar métodos en la pila de llamadas durante la depuración en Visual Studio.

Volver al principioContents | Start debugging a VS project; attach to a process

Asociar a un proceso

El depurador también puede asociar a un programa que se esté ejecutando en un proceso fuera de Visual Studio. Después de asociar a un programa, podrá usar los comandos de ejecución del depurador, inspeccionar el estado del programa, etc. La capacidad de inspeccionar el programa podría ser limitada, en función de si el programa se ha generado con información de depuración, de si el usuario tiene acceso al código fuente del programa o de si el compilador JIT de Common Language Runtime realiza un seguimiento de la información de depuración.

Para asociar a un proceso que se está ejecutando en el equipo local

Elija Depurar, Asociar al proceso. En el cuadro de diálogo Asociar al proceso, seleccione el proceso en la lista Procesos disponibles y elija Asociar.

Cuadro de diálogo Asociar al proceso

Vea Crear asociaciones con procesos en ejecución con el depurador de Visual Studio para obtener más información.

Volver al principioContents | Start debugging a VS project; attach to a process

Interrumpir el código, recorrer paso a paso o ejecutar el código y establecer la siguiente instrucción que se debe ejecutar

  • Break into code by using breakpoints or Break All**|Step into, over, or out of the code|Run to a specified location or function|Set the next statement to execute|Restrict stepping to Just My Code|Step into system calls|**Step into properties and operators in managed code

Interrumpir el código mediante puntos de interrupción o Interrumpir todos

Cuando se depura una aplicación con el depurador de VS, la aplicación se está ejecutando o está en modo de interrupción.

El depurador interrumpe la ejecución de la aplicación cuando llega a un punto de interrupción o cuando se produce una excepción. También puede interrumpir manualmente la ejecución en cualquier momento.

Un punto de interrupción es una señal que indica al depurador que debe suspender temporalmente la ejecución de la aplicación en un punto determinado. Cuando la ejecución se suspende en un punto de interrupción, se dice que el programa se encuentra en modo de interrupción. Entrar en el modo de interrupción no detiene ni finaliza la ejecución del programa, cuya ejecución se puede reanudar en cualquier momento.

La mayoría de las características del depurador, como la presentación de los valores de las variables en la ventana Variables locales o la evaluación de las expresiones en la ventana Inspección, solo están disponibles en el modo de interrupción. Todos los elementos de la aplicación permanecen en la memoria (por ejemplo, las funciones, variables y objetos), pero se suspenden sus movimientos y actividades. Durante el modo de interrupción, puede examinar las posiciones de los elementos y estados para buscar infracciones o errores. También puede realizar ajustes en la aplicación mientras está en modo de interrupción.

Por último, puede configurar puntos de interrupción para suspender la ejecución en función de una serie de condiciones. Vea Puntos de interrupción: Usar números de llamadas, funciones de pila de llamadas y condiciones para realizar interrupciones cuando y donde quiera en el depurador de Visual Studio. En esta sección se explican dos maneras básicas de interrumpir la ejecución del código.

Establecer puntos de interrupción en el código

Para establecer un punto de interrupción simple en el código, abra el archivo de código fuente en el editor de Visual Studio. Establezca el cursor en la línea de código en la que desea interrumpir y elija Punto de interrupción, Insertar punto de interrupción en el menú contextual (teclado: F9. El depurador interrumpe la ejecución inmediatamente antes de que se ejecute la línea.

Establecer un punto de interrupción

Los puntos de interrupción proporcionan un amplio conjunto de funcionalidades adicionales en Visual Studio, como los puntos de interrupción condicionales y de seguimiento. Vea Puntos de interrupción: Usar números de llamadas, funciones de pila de llamadas y condiciones para realizar interrupciones cuando y donde quiera en el depurador de Visual Studio.

Interrumpir el código manualmente

Para interrumpir en la siguiente línea de código disponible de una aplicación en ejecución, elija Depurar, Interrumpir todos (teclado: Ctrl+Alt+Break).

  • Si está depurando con la opción Solo mi código habilitada, se interrumpe en la siguiente línea de código del proyecto. Vea Restrict stepping to Just My Code.

  • Si depura varios programas, un punto de interrupción o el comando Interrumpir todos afecta de forma predeterminada a todos los programas que se están depurando. Vea Configure the execution behavior of multiple processes.

  • Si interrumpe el código mientras se está ejecutando sin los archivos de código fuente o de símbolos (archivos .pdf) correspondientes, el depurador muestra una página con el mensaje No se encontraron archivos de código fuente o No se encontraron símbolos que le permitirá encontrar los archivos adecuados. Vea Especificar archivos de código fuente y símbolos (.pdb) en el depurador de Visual Studio.

    Si no puede obtener acceso a los archivos de compatibilidad, aún puede depurar las instrucciones de ensamblado en la ventana Desensamblado.

Volver al principioContents | Break into code, step or run through code, set the next statement to execute

Ejecutar el código paso a paso por instrucciones, por procedimientos o para salir

Uno de los procedimientos de depuración más comunes es la ejecución paso a paso. En este procedimiento, se ejecuta el código línea por línea. Cuando se detiene la ejecución, por ejemplo, cuando se ejecuta el depurador hasta un punto de interrupción, puede usar tres comandos del menú Depurar para recorrer el código paso a paso:

Comando de menú

Método abreviado de teclado

Descripción

Paso a paso por instrucciones

F11

Si la línea contiene una llamada a una función, Paso a paso por instrucciones sólo ejecuta la llamada en sí y, a continuación, se detiene en la primera línea de código incluida en la función. En caso contrario, Paso a paso por instrucciones ejecuta la siguiente instrucción.

Paso a paso por procedimientos

F10

Si la línea contiene una llamada a una función, Paso a paso por procedimientos ejecuta la función llamada y, a continuación, se detiene en la primera línea de código incluida en la función de llamada. En caso contrario, Paso a paso por instrucciones ejecuta la siguiente instrucción.

Paso a paso para salir

Shift+F11

Paso a paso para salir reanuda la ejecución del código hasta que regresa la función y, a continuación, se interrumpe en el punto devuelto de la función de llamada.

  • En una llamada a una función anidada, Paso a paso por instrucciones llega hasta la función más profundamente anidada. Si utiliza Paso a paso por instrucciones en una llamada como Func1(Func2()), el depurador ejecuta paso a paso las instrucciones de la función Func2.

  • El depurador recorre paso a paso las instrucciones del código en lugar de las líneas físicas. Por ejemplo, una cláusula if se puede escribir en una línea:

    int x = 42;
    string s = "Not answered";
    if( int x == 42) s = "Answered!";
    
    Dim x As Integet = 42
    Dim s As String = "Not answered"
    If x = 42 Then s = "Answered!"
    

    Cuando esta línea se ejecuta paso a paso por instrucciones, el depurador trata la condición como un paso y el resultado como otro (en este ejemplo, la condición es true).

Para realizar un seguimiento visual de la pila de llamadas mientras se depuran paso a paso las funciones, vea Asignar métodos en la pila de llamadas durante la depuración en Visual Studio.

Volver al principioContents | Break into code, step or run through code, set the next statement to execute

Ejecutar hasta una ubicación o función determinada

En algunas ocasiones, puede que desee ejecutar el código hasta un punto determinado y después detener la ejecución. Si ha establecido un punto de interrupción en la ubicación en la que desea interrumpir, elija Depurar, Iniciar depuración si no ha iniciado la depuración, o Depurar, Continuar. (En ambos casos F5 es la tecla de método abreviado). El depurador se detiene en el punto de interrupción siguiente en la ejecución del código. Elija Depurar, Continuar hasta que llegue al punto de interrupción que desea.

También puede ejecutar hasta el punto donde haya colocado el cursor en el editor de código o hasta una función específica.

Ejecutar un proceso hasta la ubicación del cursor

Para ejecutar un proceso hasta la ubicación del cursor, coloque el cursor en una línea de código ejecutable de una ventana de código fuente. En el menú contextual del editor, elija Ejecutar hasta el cursor.

Ejecutar un proceso hasta una función de la pila de llamadas

En la ventana Pila de llamadas, seleccione la función y elija Ejecutar hasta el cursor en el menú contextual. Para realizar un seguimiento visual de la pila de llamadas, vea Asignar métodos en la pila de llamadas durante la depuración en Visual Studio.

Ejecutar un proceso hasta una función especificada por nombre

Puede indicar al depurador que ejecute la aplicación hasta que llegue a una función especificada. Puede especificar la función por su nombre o elegirla en la pila de llamadas.

Para especificar una función por su nombre, elija Depurar, Nuevo punto de interrupción, Interrumpir en función y escriba el nombre de la función y otra información de identificación.

Cuadro de diálogo Nuevo punto de interrupción

Si la función se sobrecarga o está en varios espacios de nombres, puede elegir las funciones que desee en el cuadro de diálogo Elegir puntos de interrupción.

Cuadro de diálogo Elegir puntos de interrupción

Volver al principioContents | Break into code, step or run through code, set the next statement to execute

Establecer la siguiente instrucción que se debe ejecutar

Después de interrumpir el depurador, puede mover el punto de ejecución para establecer la siguiente instrucción de código que se debe ejecutar. Una flecha amarilla en el margen de una ventana de código fuente o de la ventana Desensamblado indica la ubicación de la siguiente instrucción que se debe ejecutar. Moviendo esta flecha, puede saltarse una parte del código o volver a una línea previamente ejecutada. Puede utilizar esto en situaciones como la omisión de una sección de código que contiene un error conocido.

Example2

Para establecer la siguiente instrucción que se debe ejecutar, siga uno de estos procedimientos:

  • En una ventana de código fuente, arrastre la flecha amarilla hasta la ubicación en la que desea establecer la siguiente instrucción, dentro del mismo archivo de código fuente.

  • En una ventana de código fuente, establezca el cursor en la línea que desea ejecutar a continuación y elija Establecer instrucción siguiente en el menú contextual.

  • En la ventana Desensamblado, establezca el cursor en la instrucción de ensamblado que desea ejecutar a continuación y elija Establecer instrucción siguiente en el menú contextual.

Nota de precauciónPrecaución

Al establecer la siguiente instrucción, el contador del programa salta directamente a la nueva ubicación.Utilice este comando con precaución.

  • No se ejecutan las instrucciones entre los puntos de ejecución anteriores y nuevos.

  • Si mueve el punto de ejecución hacia atrás, no se deshacen las instrucciones intermedias.

  • Al mover la instrucción siguiente a otro ámbito o función normalmente se producen daños en la pila de llamadas y un error o excepción en tiempo de ejecución.Si intenta mover la instrucción siguiente a otro ámbito, el depurador abre un cuadro de diálogo con una advertencia que le ofrece la oportunidad de cancelar la operación.En Visual Basic, no puede mover la instrucción siguiente a otro ámbito o función.

  • En C++ nativo, si ha habilitado comprobaciones en tiempo de ejecución, al establecer la instrucción siguiente se puede producir una excepción cuando la ejecución llegue al final del método.

  • Cuando la opción Editar y continuar está habilitada, Establecer instrucción siguiente genera un error si se han realizado modificaciones que Editar y continuar no puede reasignar inmediatamente.Esto puede suceder, por ejemplo, si se ha editado código en un bloque catch.Cuando esto ocurra,aparecerá un mensaje de error que indica que no se puede realizar la operación.

NotaNota

En código administrado, no puede mover la instrucción siguiente en las situaciones siguientes:

  • La instrucción siguiente está en un método diferente de la instrucción actual.

  • La depuración se inició a través de 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.

No se puede establecer la siguiente instrucción mientras se está ejecutando activamente la aplicación. Para establecer la siguiente instrucción, el depurador debe estar en modo de interrupción.

Volver al principioContents | Break into code, step or run through code, set the next statement to execute

Restringir la ejecución paso a paso a Solo mi código

Puede que, durante la depuración, desee examinar únicamente el código que ha escrito y pasar por alto otro código, como el correspondiente a las llamadas al sistema. Puede hacer esto mediante la depuración de Sólo mi código. Sólo mi código oculta el código de no usuario para que no aparezca en las ventanas del depurador. Mientras avanza, el depurador avanza paso a paso a través del código de no usuario, pero no se detiene en él. Vea Solo mi código.

NotaNota

Sólo mi código no se admite para los proyectos de dispositivos.

Volver al principioContents | Break into code, step or run through code, set the next statement to execute

Ir a llamadas del sistema

Si ha cargado símbolos de depuración para el código del sistema y Solo mi código no está habilitado, puede ir a una llamada del sistema al igual que lo haría con cualquier otra llamada.

Para obtener información sobre cómo deshabilitar Solo mi código, vea Restrict stepping to Just My Code

Para tener acceso a los archivos de símbolos de Microsoft, vea Use symbol servers to find symbol files not on your local machine en el tema Especificar archivos de código fuente y símbolos (.pdb) en el depurador de Visual Studio.

Para cargar los símbolos de un componente del sistema específico durante la depuración:

  1. Abra la ventana Módulos (teclado: Ctrl+Alt+U).

  2. Seleccione el módulo para el que desea cargar los símbolos.

    Puede indicar qué módulos tienen cargados los símbolos examinando la columna Estado del símbolo.

  3. Elija Cargar símbolos en el menú contextual.

Volver al principioContents | Break into code, step or run through code, set the next statement to execute

Ir a propiedades y operadores en código administrado

El depurador se salta las propiedades y los operadores en código administrado de forma predeterminada. En la mayoría de los casos, esto proporciona una mejor experiencia de depuración. Para que el depurador vaya a las propiedades y los operadores, elija Depuración, Opciones y configuración. En la página Depuración, General, desactive la casilla Saltar propiedades y operadores (solo administrado).

Volver al principioContents | Break into code, step or run through code, set the next statement to execute

Detener y reiniciar la depuración y desasociar del proceso depurado

Detener la depuración significa terminar la sesión de depuración. Detener la ejecución significa terminar el proceso en depuración y finalizar la sesión de depuración. No debe confundirse con interrumpir la ejecución, que significa detener temporalmente la ejecución del proceso en depuración pero dejando la sesión de depuración activa. Cuando se desasocia de un proceso, se detiene la depuración del proceso pero se permite que siga ejecutándose.

  • Stop debugging from VS**|Close the app that is being debugged|Restart debugging|**Detach from the debugged app

Detener la depuración de VS

Elija Depurar, Detener depuración para finalizar el proceso que esté depurando cuando el programa se inició en Visual Studio. Si se asoció al proceso en lugar de iniciarlo desde Visual Studio, el proceso seguirá ejecutándose.

Volver al principioContents | Stop, restart debugging; detach from the debugged process

Cerrar la aplicación que se está depurando

Cuando se cierra una aplicación que se está depurando, la depuración se detiene automáticamente.

Reiniciar la depuración

Elija Depuración, Reiniciar para detener la sesión de depuración actual y reiniciar el proyecto de inicio en el depurador.

Volver al principioContents | Stop, restart debugging; detach from the debugged process

Desasociar de la aplicación depurada

Elija Depurar, Desasociar todo para detener la depuración y permitir que el proceso o procesos depurados se ejecuten.

SugerenciaSugerencia

Vea Crear asociaciones con procesos en ejecución con el depurador de Visual Studio y Depurar uno o varios procesos en Visual Studio para obtener más información sobre cómo asociarse a varios procesos y controlarlos con Visual Studio.

Volver al principioContents | Stop, restart debugging; detach from the debugged process