Compartir a través de


Navegar por el código mediante el depurador de Visual Studio

El depurador de Visual Studio puede ayudarle a navegar por el código para inspeccionar el estado de una aplicación y mostrar su flujo de ejecución, que también se conoce como ejecución paso a paso de código. Puede usar métodos abreviados de teclado, comandos de depuración, puntos de interrupción y otras características para llegar rápidamente al código que desea examinar. Al familiarizarse más con los comandos de navegación y los accesos directos del depurador, puede encontrar y resolver problemas de aplicaciones de forma más rápida y sencilla. Para obtener una lista de los métodos abreviados de teclado más comunes relacionados con la navegación y depuración de código, consulte la sección Depurar en Métodos abreviados de teclado.

Nota

Si no está familiarizado con el código de depuración, es posible que quiera leer Depuración para principiantes absolutos y herramientas y técnicas de depuración antes de leer este artículo.

Inicio de la depuración y acceso al modo de interrupción

Algunos comandos de navegación inician la aplicación y asocia automáticamente el depurador. La aplicación se detiene en una línea de código específica en función del comando que se haya usado para iniciar la navegación y entra en el modo de interrupción (es decir, la aplicación está en pausa en el depurador).

En el modo de interrupción, la ejecución de la aplicación se suspende mientras las funciones, las variables y los objetos permanecen en memoria. Puede navegar por el código cuando el depurador está en modo de interrupción. Hay dos maneras muy comunes de entrar rápidamente en el modo de interrupción:

Se pueden usar comandos de procesamiento de código paso a paso para iniciar la aplicación, pero su uso es más frecuente después de haber entrado en el modo de interrupción.

Algunos comandos de navegación se usan principalmente en modo de pausa (es decir, mientras estás pausado en el depurador).

Depuración y modo de interrupción

Cuando esté en modo de interrupción, puede usar varios comandos para navegar por el código. Puede examinar los valores de las variables para buscar infracciones o errores. Para algunos tipos de proyecto, también puede realizar ajustes en la aplicación cuando esté en modo de pausa.

La mayoría de las ventanas del depurador, como los Módulos y las ventanas Inspección, solo están disponibles mientras el depurador está asociado a la aplicación. Algunas 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 mientras el depurador está en pausa (es decir, en modo de interrupción).

Nota

Si interrumpe código que no tiene archivos de código fuente o de símbolos (.pdb) cargados, el depurador mostrará una página con el mensaje No se encontraron archivos de código fuente o No se encontraron símbolos que le permitirá encontrar y cargar los archivos. Consulte Specify symbol (.pdb) and source files (Especificación de símbolo (.pdb) y archivos de origen). Si no puede cargar los archivos de código fuente o de símbolos, aún puede depurar las instrucciones de ensamblado en la ventana Desensamblado.

Ejecución paso a paso de código

Por procesamiento de código paso a paso se entiende la ejecución del código de aplicación de instrucción en instrucción, con el depurador asociado. Los comandos paso a paso del depurador ayudan a comprobar los efectos de cada instrucción y a obtener más información sobre el flujo de la ejecución.

Adéntrate en el código

Para detenerse en cada instrucción durante la depuración, use Depurar>Depurar paso a paso por instrucciones o presione F11.

El depurador recorre paso a paso las instrucciones del código y no 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!";

Pero 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 el ejemplo anterior, la condición es verdadera.

En una llamada a una función anidada, Paso a paso por instrucciones llega hasta la función más profundamente anidada. Por ejemplo, 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.

Sugerencia

Según ejecuta cada línea de código, puede mantener el cursor sobre las variables para ver sus valores o usar las ventanas Variables locales e Inspección para ver cambiar los valores. También puede realizar un seguimiento visual de la pila de llamadas mientras depura las funciones paso a paso. (Solo para Visual Studio Enterprise, vea Creación de un mapa visual de la pila de llamadas durante la depuración).

Examen del código y omisión de algunas funciones

Es posible que no le interese una función mientras depura. O puede que sepa que algún código funciona, como el código de biblioteca bien probado. Puede usar los siguientes comandos para omitir el código mientras se esté ejecutando paso a paso. Las funciones siguen ejecutándose, pero el depurador las omite.

Comando teclado Comando del menú Depurar Descripción
F10 Paso a paso por procedimientos Si la línea actual contiene una llamada de función, Paso a paso por procedimientos ejecuta el código y suspende la ejecución en la primera línea de código después de que se devuelva la función a la que se ha llamado.
Mayús+F11 Paso a paso para salir Paso a paso para salir continúa ejecutando el código y suspende la ejecución cuando se devuelve la función actual. El depurador omite la función actual.

Ejecución hasta una ubicación o función determinada

Es posible que prefiera ejecutarse directamente en una ubicación o función específica cuando sepa exactamente qué código desea inspeccionar o si sabe dónde desea iniciar la depuración.

  • Establecer un punto de interrupción es mejor si cree que desea volver a usar el punto de interrupción.
  • Otros métodos son para mayor comodidad y son similares a establecer un punto de interrupción temporal.

Ejecución en un punto de interrupción en el código

Para establecer un punto de interrupción simple en el código, seleccione el margen izquierdo situado junto a la línea de código donde desea suspender la ejecución. También puede seleccionar la línea y presionar F9, seleccionar Depurar>Alternar puntos de interrupción, o hacer clic con el botón derecho y seleccionar Punto de interrupción>Insertar punto de interrupción. El punto de interrupción aparece como un punto rojo en el margen izquierdo junto a la línea de código. El depurador suspende la ejecución justo antes de que se ejecute la línea.

Captura de pantalla que muestra cómo establecer un punto de interrupción.

Captura de pantalla que muestra cómo establecer un punto de interrupción.

Los puntos de interrupción de Visual Studio proporcionan un amplio conjunto de funcionalidades, como puntos de interrupción condicionales y puntos de seguimiento. Para obtener más información, consulte Uso de los puntos de interrupción.

Ejecución en un punto de interrupción de función

Puede establecer el depurador para que se ejecute hasta que alcance una función especificada. Puede especificar la función por su nombre o elegirla en la pila de llamadas.

Para especificar un punto de interrupción de función por nombre:

  1. Seleccione Depurar>Nuevo punto de interrupción>Punto de interrupción de función.

  2. En el cuadro de diálogo Nuevo punto de interrupción de función, escriba el nombre de la función y seleccione su lenguaje:

    Captura de pantalla que muestra el cuadro de diálogo Nuevo punto de interrupción de función.

    Captura de pantalla que muestra el cuadro de diálogo Nuevo punto de interrupción de función.

  3. Seleccione Aceptar.

Si la función está sobrecargada o en más de un espacio de nombres, puede elegir el que quiera en la ventana Puntos de interrupción:

Captura de pantalla en la que se muestra la ventana de puntos de interrupción.

Captura de pantalla en la que se muestra la ventana de puntos de interrupción.

Para seleccionar un punto de interrupción en una función desde la pila de llamadas:

  1. Durante la depuración, abra la ventana Pila de llamadas. Para ello, seleccione Depurar>Ventanas>Pila de llamadas.

  2. En la ventana Pila de llamadas, haga clic con el botón derecho en una función y seleccione Ejecutar hasta el cursor o presione Ctrl+F10.

Para información sobre cómo realizar un seguimiento visual de la pila de llamadas, vea Creación de un mapa visual de la pila de llamadas durante la depuración.

Ejecución hasta la ubicación del cursor

Para realizar la ejecución hasta la ubicación del cursor, seleccione en el código fuente o en la ventana Pila de llamadas la línea en la que quiera interrumpir la ejecución, haga clic con el botón derecho y seleccione Ejecutar hasta el cursor o presione Ctrl+F10. Seleccionar Ejecutar hasta el cursor equivale a establecer un punto de interrupción temporal.

Forzado de la ejecución a una ubicación de cursor

Para realizar la ejecución hasta la ubicación del cursor, seleccione en el código fuente o en la ventana Pila de llamadas la línea en la que quiera interrumpir la ejecución, haga clic con el botón derecho y seleccione Force Run to Cursor (Forzar Ejecutar hasta el cursor). Al seleccionar Force Run to Cursor (Forzar Ejecutar hasta el cursor), se omitirán los puntos de interrupción y las excepciones de primera oportunidad hasta que el depurador alcance la línea de código.

Ejecutar hasta clic

Mientras el depurador está en pausa, puede mantener el cursor sobre una instrucción en el código fuente o en la ventana Desensamblado y seleccionar la flecha verde Ejecutar hasta aquí. Usar Ejecutar hasta clic equivale a establecer un punto de interrupción temporal.

Captura de pantalla que muestra el comando 'Run to Click' y la flecha verde.

Nota

Run to Click (Ejecutar hasta hacer clic) está disponible a partir de Visual Studio 2017.

Forzar ejecución hasta hacer clic

Mientras el depurador está en pausa, puede pasar el cursor por encima de una instrucción en el código fuente mientras mantiene pulsada la tecla Mayús, y después seleccionar Force run execution to here (Forzar Ejecutar hasta aquí). Al elegir esta opción, la aplicación adjunta el depurador de Visual Studio y se pausa en la ubicación del cursor. Los puntos de interrupción y las excepciones de primera oportunidad que se encuentren durante la ejecución se deshabilitan temporalmente.

Captura de pantalla que muestra Force Run to Click (Forzar ejecución hasta hacer clic).

Nota

Force Run to Click (Forzar Ejecutar hasta hacer clic) está disponible a partir de Visual Studio 2022.

Interrumpir el código manualmente

Para interrumpir en la siguiente línea de código disponible en una aplicación en ejecución, seleccione Depurar>Interrumpir todo o presione Ctrl+Alt+Interrumpir.

Depurar código no perteneciente al usuario

De forma predeterminada, el depurador intenta depurar solo el código de la aplicación habilitando una configuración denominada Solo mi código. Para obtener más información sobre cómo funciona esta característica para varios tipos de proyecto y lenguajes, y cómo puede personalizarla, consulte Solo mi código.

Para ver el código del marco, el código de la biblioteca de terceros o las llamadas del sistema durante la depuración, puede deshabilitar Solo mi código. En Herramientas (o Depurar) >Opciones>Depuración, desactive la casilla Habilitar Solo mi código. Cuando Solo mi código está deshabilitado, el código que no es de usuario aparece en las ventanas del depurador y el depurador puede entrar en el código que no es de usuario.

Nota

Just My Code no es compatible con proyectos de dispositivos.

Depuración de código del sistema

Si ha cargado símbolos de depuración para el código del sistema de Microsoft y ha deshabilitado Solo mi código, puede depurar paso a paso por instrucciones una llamada del sistema al igual que lo haría con cualquier otra llamada.

A partir de la versión 17.7 de Visual Studio 2022, puede descompilar automáticamente el código .NET al depurar en código externo sin necesidad de cargar manualmente símbolos de depuración. Para obtener más información, consulte Generación de código fuente a partir de ensamblados .NET durante la depuración.

Para obtener información sobre cómo cargar símbolos de Microsoft, consulte Configurar la ubicación de los archivos de símbolos y las opciones de carga.

Para cargar símbolos para un componente de sistema específico:

  1. Mientras realiza la depuración, abra la ventana Módulos; para ello, seleccione Depurar>Ventanas>Módulos o presione Ctrl+Alt+U.

  2. En la ventana de módulos , puede ver qué módulos tienen símbolos cargados en la columna Estado de símbolos. Haga clic con el botón derecho en el módulo para el que desea cargar símbolos y, a continuación, seleccione Cargar símbolos.

Accede 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, este comportamiento proporciona una mejor experiencia de depuración. Para habilitar que las propiedades y los operadores se depuren paso a paso por instrucciones, seleccione Depurar>Opciones. En la página Depuración>General, desactive la casilla Saltar propiedades y operadores (solo administrado).

Mover el puntero para cambiar el flujo de ejecución

Para cambiar la siguiente instrucción que se va a ejecutar, basta con mover el puntero de ejecución amarillo. Puede usar esta característica mientras está en modo de interrupción.

Se trata de una característica avanzada del depurador. Para obtener más información, vea Movimiento del puntero de ejecución.