Compartir a través de


Iniciar, interrumpir, detener el Depurador de Visual Studio y navegar por él

En este tema

En este tema

La depuración de inicio

  • Adjuntar a un proceso

  • Automáticamente se inicie una aplicación en el depurador

Navega el código en una sesión de depuración

  • Interrupción en código mediante puntos de interrupción o interrupción Todo

  • Entrar en, en, o de código

  • Ejecutar un proceso hasta una ubicación o a una función especificada

  • Establecer instrucción siguiente para ejecutarse

  • Restrict que avanza con Sólo mi código

  • Entrar en las llamadas del sistema

  • Entrar en las propiedades y los operadores en código administrado

Detenga la depuración

La depuración de inicio

Cuando la solución está abierta es Visual Studio, tiene tres opciones para iniciar la depuración:

Elija debug, iniciar depuración (teclado: F5).

El inicio de la aplicación y después ejecuta hasta:

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

  • Elija Detener depuración en el menú debug.

  • Se produce una excepción.

  • Los resultados de la aplicación.

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

El inicio y a continuación la aplicación 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 iniciará y se ejecutará hasta que encuentre un punto de interrupción o la ubicación del cursor, lo que encuentre primero.

y740d9d3.collapse_all(es-es,VS.110).gifAdjuntar a un proceso

El depurador también puede asociarse a un programa que se ejecuta en un fuera de Visual Studio.Después de asociar un programa, puede utilizar los comandos de ejecución del depurador, inspeccionar el estado del programa, etc.La capacidad de inspeccionar el programa se puede restringir, dependiendo de si éste se ha generado con información de depuración y si tiene acceso al código fuente del programa, y si el compilador JIT de Common Language Runtime está realizando la información de depuración.

Adjuntar a un proceso que se ejecuta en el equipo local

Elija debug, Asociar al proceso.En el cuadro de diálogo Asociar al proceso, seleccione el proceso de la lista Procesos disponibles, y después elija Asociar.

Cuadro de diálogo Asociar al proceso

Para obtener más información, consulte Conectarse a procesos en ejecución.

y740d9d3.collapse_all(es-es,VS.110).gifAutomáticamente se inicie una aplicación en el depurador

Es posible que en ocasiones haya que depurar código de inicio para una aplicación que es iniciada por otro proceso.Por ejemplo, servicios y configuraciones personalizadas.En estos casos, se puede iniciar el depurador y asociarse automáticamente cuando se inicia la aplicación.

  1. Inicie el Editor del Registro (regedit.exe).

  2. Navegue a la carpeta HKEY_LOCAL_MACHINE \software\microsoft\windows nt\currentversion\image \Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options \Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options \Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options.

  3. Seleccione la carpeta de la aplicación que desea comenzar en el depurador.

    Si el nombre de la aplicación no se muestra como carpeta secundaria, Opciones de ejecución del archivo de imagen seleccione y a continuación elija Nueva, Clave en el menú contextual.Seleccione la nueva clave, elija cambiar nombre en el menú contextual, y escriba el nombre de la aplicación.

  4. En el menú contextual de la carpeta de la aplicación, elija Nueva, Valor de cadena.

  5. Cambie el nombre del nuevo valor de New Value a depurador.

  6. En el menú contextual de la entrada del depurador, elija Modificar.

  7. En el cuadro de diálogo de la cadena de edición, vsjitdebugger.exe escrito en el cuadro Datos del valor.

    Cuadro de diálogo Editar cadena

Entrada de inicio automático del depurador en regedit.exe

En este tema

y740d9d3.collapse_all(es-es,VS.110).gifInterrupción en código mediante puntos de interrupción o interrupción Todo

Cuando se depura una aplicación con el depurador de Visual Studio, 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 ver valores variables en la ventana configuración locales o evaluación de expresiones en la ventana inspección, solo están disponibles en modo de interrupción.Permanece todos los elementos de la aplicación (permanece funciones, variables, y los objetos en memoria, por ejemplo), 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.Puede hacer ajustes a la aplicación mientras se está en modo de interrupción

Puede configurar los puntos de interrupción para suspender la ejecución basada en varias condiciones.Vea Usar puntos de interrupción y puntos de seguimiento.Esta sección describe dos maneras básicas de interrumpir en código.

Establezca 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 donde 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 ejecuta la línea.

Establecer un punto de interrupción

Puntos de interrupción en Visual Studio proporcionan un amplio conjunto de funcionalidad adicional, como puntos de interrupción condicionales y seguimiento.Vea Usar puntos de interrupción y puntos de seguimiento.

Manualmente interrupción en código

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

  • Si está depurando con el Sólo mi opción de código habilitado, interrumpe en la línea siguiente de código en el 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 Change the break behavior of multiple processes en este tema.

  • Si detiene mientras ejecuta código sin archivos de origen correspondientes o símbolo (.pdf)), el depurador muestra Archivos de código fuente no encontrados o Símbolos no encontrados que le ayudarán a encontrar los archivos adecuados.Vea Buscar símbolo (.pdb), origen y archivos binarios.

    Si no puede obtener acceso a los archivos de compatibilidad, todavía puede depurar instrucciones de ensamblado de la ventana desensamblado.

y740d9d3.collapse_all(es-es,VS.110).gifEntrar en, en, o de código

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 ha detenido la ejecución, como ejecutar el depurador a un punto de interrupción, puede utilizar tres comandos de menú debug de recorrer el código:

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.Si no, Paso a paso por instrucciones ejecuta la siguiente instrucción.

Paso a paso por procedimientos

F10

Si la línea contiene una llamada de función, Paso a paso por procedimientos ejecuta la función llamada, después se detiene en la primera línea de código en la función de llamada.Si no, 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 realmente con instrucciones de código en lugar de las líneas físicas.Por ejemplo una cláusula de 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 se entra en esta línea, el depurador trata la condición como un paso y el resultado como otro (en este ejemplo, la condición es true).

y740d9d3.collapse_all(es-es,VS.110).gifEjecutar un proceso hasta una ubicación o a una función especificada

Algunas veces se desea ejecutar el código hasta un punto determinado, y se detendrá la ejecución.Si tiene un punto de interrupción establecido en la ubicación donde desea interrumpir, elija debug, iniciar depuración si no ha iniciado la depuración, o, o debug, 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 debug, Continuar hasta que llegue al punto de interrupción que desea.Vea Set breakpoints in the code en este tema.

También puede ejecutar hasta donde ha coloca el cursor en el editor de código, o la ejecución en la función especificada.

La ejecución en la ubicación del cursor

Para ejecutar 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.

Ejecute a una función en la pila de llamadas

En la ventana pila de llamadas, seleccione la función, y elija Ejecutar hasta el cursor en el menú contextual.

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 nombre o puede elegirla de la pila de llamadas.

Para especificar una función por nombre, elegir debug, Nuevo punto de interrupción, Interrumpir en función, entonces para escribir 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án en el espacio de nombres múltiple, 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

y740d9d3.collapse_all(es-es,VS.110).gifEstablecer instrucción siguiente para ejecutarse

Después de que interrumpe el depurador, puede mover el punto de ejecución para establecer la siguiente instrucción de código que se ejecuta.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 debe ejecutarse, utilice uno de estos procedimientos:

  • En una ventana de código fuente, arrastre la punta de flecha amarilla en una ubicación donde desea establecer la siguiente instrucción en el mismo archivo de código fuente

  • En una ventana de código fuente, establezca el cursor en la línea que desea ejecutar 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 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 hace las comprobaciones en tiempo de ejecución, establecer la siguiente instrucción puede hacer que se produzca una excepción cuando llega al final del método.

  • Cuando está habilitada la opción editar y continuar, Establecer instrucción siguiente produce un error si ha 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 ocurre.Verá un mensaje de error que indica que la operación no se admite.

[!NOTA]

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.

y740d9d3.collapse_all(es-es,VS.110).gifRestrict que avanza con Sólo 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.

Para habilitar o deshabilitar la depuración de sólo mi código, elija debug, Opciones y configuración.En Depuración, la página General, active o desactive Habilitar Solo mi código.

Para distinguir entre el código de usuario de código de no usuario, Solo mi código analiza archivos de símbolos (PDB) y las optimizaciones de programa.

En una versión de depuración estándar, se desactiva la optimización y se crean símbolos de depuración para todos los módulos.Cuando se ejecuta una compilación de depuración, se considera que esos módulos pertenecen al código de usuario.Pero una función de biblioteca que se optimiza y no tiene símbolos de depuración no se considera código de usuario.Solo mi código impide que la ejecución se detenga en los puntos de interrupción del código de biblioteca, que no suele ser código que esté interesado en depurar.En la ventana Puntos de interrupción, estos puntos de interrupción se mostrarán con el icono de punto de interrupción deshabilitado.

Para ver todo el código y detenerse en los puntos de interrupción, puede desactivar la depuración de sólo mi código mediante el cuadro de diálogo opciones.

Hay tres atributos que también afectan a lo que el depurador considera ser Mi código: DebuggerNonUserCodeAttribute indica al depurador que el código al que se aplica no es Mi código.DebuggerHiddenAttribute oculta el código para el depurador, incluso si Solo mi código está desactivado.DebuggerStepThroughAttribute indica al depurador que recorra el código al que se aplica en lugar de ejecutarlo paso a paso por instrucciones.

Cuando se habilita la opción sólo mi código, puede elegir Interrumpir todos en el menú debug y detener la ejecución en una ubicación donde no hay mi código que mostrar.Cuando esto ocurre, no se muestra ningún código.Además, si elige un comando Step, le conducirá a la siguiente línea de Mi código.

Las instrucciones de interrupción mediante programación, como las instrucciones Stop de Visual Basic, se controlan de manera diferente.El depurador siempre se interrumpe en estas instrucciones, aunque esté habilitada la opción Sólo mi código.En situaciones de este tipo, se muestra el código que no es del usuario en lugar de ocultarse, pero la ejecución paso a paso le conducirá fuera del código que no es del usuario hasta la siguiente línea de Mi código.

[!NOTA]

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

y740d9d3.collapse_all(es-es,VS.110).gifEntrar en las llamadas del sistema

Si ha cargado los símbolos de depuración del código del sistema y sólo mi código no está habilitado, puede entrar en una llamada del sistema como en cualquier otra llamada.

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

Para tener acceso a los archivos de símbolos de Microsoft, vea Mediante Windows y otros símbolos de Microsoft en el tema de Buscar símbolo (.pdb), origen y archivos binarios.

Para cargar símbolos para un componente del sistema concreto mientras depura:

  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.

y740d9d3.collapse_all(es-es,VS.110).gifEntrar en las propiedades y los operadores en código administrado

El depurador sobre propiedades y operadores en el código administrado de forma predeterminada.En la mayoría de los casos, esto proporciona una mejor experiencia de depuración.Para habilitar la entrada en propiedades u operadores, elija debug, Opciones y configuración.En Depuración, la página General, desactive la casilla Saltar propiedades y operadores (sólo administrado)

En este tema

Detenga la depuración

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 un proceso detiene la depuración en proceso pero deja que se ejecuta.

Detener depuración de Visual Studio

Elija debug, Detener depuración.

Detener depuración termina el proceso en depuración si el programa se inició en Visual Studio.Si se asocia al proceso en lugar de hacerlo de Visual Studio, el proceso continúa ejecutándose.

La depuración y reiniciar stop

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

Cierre la aplicación que se está depurando

Cuando sale de una aplicación que se está depurando, la depuración se detendrá automáticamente.