Compartir a través de


Primer vistazo al depurador de Visual Studio

En este tema se presentan las herramientas del depurador proporcionadas por Visual Studio. En el contexto de Visual Studio, cuando depuras tu aplicación, normalmente significa que estás ejecutando la aplicación con el depurador acoplado (es decir, en modo depurador). Al hacerlo, el depurador proporciona muchas maneras de ver lo que hace el código mientras se ejecuta. Puede recorrer el código y examinar los valores almacenados en variables, puede establecer puntos de inspección en variables para ver cuándo cambian los valores, puede examinar la ruta de ejecución del código, etc. Si es la primera vez que ha intentado depurar código, es posible que quiera leer Depuración para principiantes absolutos antes de abordar este tema. Si está intentando realizar una tarea específica y necesita saber qué característica usar, consulte el buscador de características del depurador. Para probar la depuración asistida por IA, consulte Depuración con Copilot.

Las características que se describen aquí son aplicables a C#, C++, Visual Basic, JavaScript y otros lenguajes compatibles con Visual Studio (excepto donde se indique).

Establecer un punto de interrupción e iniciar el depurador

Los puntos de interrupción son una característica útil cuando conoce la línea de código o la sección de código que desea examinar con detalle en tiempo de ejecución. Para obtener más información sobre los diferentes tipos de puntos de interrupción, como los puntos de interrupción condicionales y de función, vea Uso de puntos de interrupción.

Para depurar, tiene que iniciar la aplicación con el depurador asociado al proceso de la aplicación. Para ello:

  • Presione F5 (Depurar > Iniciar depuración), que es el método más común.

Sin embargo, ahora mismo es posible que no haya establecido ningún punto de interrupción para examinar el código de su aplicación, por lo que primero lo haremos y después iniciaremos el proceso de depuración. Los puntos de interrupción son la característica más básica y esencial para una depuración confiable. Un punto de interrupción indica dónde debe suspender Visual Studio el código en ejecución para que pueda echar un vistazo a los valores de las variables, o el comportamiento de la memoria, o si se ejecuta una rama de código o no.

Si tiene un archivo abierto en el editor de código, puede establecer un punto de interrupción haciendo clic en el margen a la izquierda de una línea de código.

Establecer un punto de interrupción

Establecer un punto de interrupción

Presione F5 (Depurar > Iniciar depuración) o el botón Iniciar depuraciónIniciar depuración en la barra de herramientas de depuración y el depurador se ejecuta en el primer punto de interrupción que encuentra. Si la aplicación todavía no se está ejecutando, F5 inicia el depurador y lo detiene en el primer punto de interrupción.

Proporcionamos los métodos abreviados de teclado para la mayoría de los comandos porque hacen que la navegación del código de la aplicación sea más rápida. (Los comandos equivalentes, como los comandos de menú, se muestran entre paréntesis). Para obtener más información sobre el uso de los comandos paso a paso, consulte Navegar por el código en el depurador.

Para iniciar la aplicación con el depurador asociado, presione F11 (Depurar > Depurar paso a paso por instrucciones). F11 es el comando Depurar paso a paso por instrucciones y permite avanzar la ejecución de la aplicación de instrucción en instrucción. Cuando se inicia la aplicación con F11, el depurador se interrumpe en la primera instrucción que se ejecuta.

Paso a paso por instrucciones F11

Paso a paso por instrucciones F11

La flecha amarilla representa la instrucción en la que el depurador se ha detenido, lo cual también suspende la ejecución de la aplicación en el mismo punto (esta instrucción todavía no se ha ejecutado).

F11 es una buena manera de examinar el flujo de ejecución con más detalle. (Para pasar más rápido a través del código, le mostramos otras opciones también). De forma predeterminada, el depurador omite el código que no es de usuario (si desea obtener más detalles, consulte Solo mi código).

Nota

En el código administrado, verá un cuadro de diálogo en el que se le preguntará si desea recibir una notificación al pasar automáticamente por encima de propiedades y operadores (comportamiento predeterminado). Si quiere cambiar el valor más adelante, deshabilite Saltar propiedades y operadores en el menú Herramientas > Opciones, en Depuración.

Saltar código para omitir funciones

Cuando se encuentre en una línea de código que sea una llamada de función o método, puede presionar F10 (Depurar > Depurar paso a paso por procedimientos) en lugar de F11.

F10 hace avanzar el depurador sin depurar las funciones ni los métodos del código de la aplicación paso a paso por instrucciones (el código se sigue ejecutando). Al presionar F10, puede omitir el código que no le interesa. De este modo, puede obtener rápidamente el código en el que está más interesado. Para obtener más información sobre el uso de los comandos de paso, vea Navegación por el código con el depurador.

Ejecutar hasta un punto del código rápidamente con el mouse

El uso del botón Ejecutar hasta clic es similar a establecer un punto de interrupción temporal. Este comando también es útil para moverse rápidamente dentro de una región visible del código de la aplicación. Puede usar Ejecutar hasta clic en cualquier archivo abierto. Para obtener más información sobre esta característica y otras características de navegación similares, consulte Ejecución hasta una ubicación determinada en el código.

En el depurador, mantenga el puntero sobre una línea de código hasta que el botón Run to Click (Ejecutar hasta clic) (ejecutar hasta aquí) Captura de pantalla del botón Ejecutar hasta clic del depurador de Visual Studio. El botón indica que la ejecución debe avanzar hasta la línea donde se coloca el botón. aparezca a la izquierda.

Captura de pantalla del depurador de Visual Studio en la que se muestra el botón Ejecutar hasta clic justo a la izquierda de una llamada a función.

Captura de pantalla del depurador de Visual Studio en la que se muestra el botón Ejecutar hasta clic justo a la izquierda de una llamada a función.

Nota

El botón Run to click (Ejecutar hasta hacer clic) (Ejecutar hasta aquí) está disponible a partir de Visual Studio 2017.

Haga clic en el botón Ejecutar hasta clic (ejecutar hasta aquí). El depurador avanza hasta la línea de código en la que ha realizado clic.

Avanzar el depurador fuera de la función actual

A veces, es posible que quiera continuar la sesión de depuración pero avanzar el depurador hasta el final de la función actual.

Presione Mayús + F11 (o bien Depurar > Salir de la depuración).

Este comando reanuda la ejecución de la aplicación (y hace avanzar el depurador) hasta que se devuelve la función actual.

Ejecutar hasta el cursor

Cuando edite código (en lugar de estar en pausa en el depurador), haga clic con el botón derecho en una línea de código de la aplicación y elija Ejecutar hasta el cursor (o presione Ctrl + F10). Este comando inicia la depuración y establece un punto de interrupción temporal en la línea de código actual. Para obtener más información sobre esta característica y características de navegación similares, consulte Ir a una ubicación específica en tu código.

Ejecutar hasta el cursor

Ejecutar hasta el cursor

Si ha establecido puntos de interrupción, el depurador se detiene en el primer punto de interrupción que alcanza.

Presione F5 hasta llegar a la línea de código donde ha seleccionado Ejecutar hasta el cursor.

Este comando es útil al editar código y desea establecer rápidamente un punto de interrupción temporal e iniciar el depurador al mismo tiempo.

Nota

Puede usar Ejecutar hasta el cursor en la ventana Pila de llamadas mientras está depurando.

Reinicio rápido de la aplicación

Haga clic en el botón ReiniciarReiniciar aplicación de la barra de herramientas de depuración (o presione Ctrl + Shift + F5).

Al presionar Reiniciar, ahorra tiempo en lugar de detener la aplicación y reiniciar el depurador. El depurador se detiene en el primer punto de interrupción alcanzado durante la ejecución del código.

Si quiere detener el depurador y volver al editor de código, puede presionar el botón rojo Habilitar herramientas de diagnóstico durante la depuración en lugar de Reiniciar.

Edición de código activo

Visual Studio 2022 admite la edición de código en directo durante la depuración. Para obtener información detallada, consulte:

Edite el código y continúe la depuración (C#, VB, C++, XAML)

En la mayoría de los lenguajes compatibles con Visual Studio, puede editar el código en medio de una sesión de depuración y continuar con la depuración. Para usar esta característica, haga clic en el código con el cursor mientras está en pausa en el depurador, realice modificaciones y presione F5, F10o F11 para continuar con la depuración. Para obtener más información sobre el uso de la característica y sus limitaciones, consulte Edición y continuación.

Edición de código y depuración continua

Para modificar el código XAML durante una sesión de depuración, consulte Escribir y depurar código XAML en ejecución con la recarga activa de XAML.

Inspeccionar variables con información sobre datos

Ahora que sabe manejarse un poco, tiene una buena oportunidad de empezar a inspeccionar el estado de la aplicación (variables) con el depurador. Las características que permiten inspeccionar variables son algunas de las características más útiles del depurador y hay diferentes maneras de hacerlo. A menudo, al intentar depurar un problema, intenta averiguar si las variables almacenan los valores que espera que tengan en un estado de aplicación determinado. Para obtener información detallada sobre el uso de sugerencias de datos, consulte Consulta de valores de datos en la información sobre datos.

Con el depurador en pausa, mantenga el puntero sobre un objeto y vea su valor o el valor de propiedad predeterminado.

Visualización de una sugerencia de datos

Visualización de una sugerencia de datos

Si la variable tiene propiedades, puede expandir el objeto para ver todas sus propiedades.

A menudo, al depurar, necesita poder comprobar rápidamente los valores de propiedad de los objetos, y la información sobre datos es una buena forma de hacerlo.

Inspección de variables con las ventanas Automático y Variables locales

En la ventana Autos, verá las variables junto con su valor actual y su tipo. En la ventana Autos se muestran todas las variables usadas en la línea actual o en la línea anterior (en C++, la ventana muestra variables en las tres líneas de código anteriores. Consulte la documentación sobre el comportamiento específico del idioma). Para obtener más información sobre el uso de estas ventanas, consulte Inspección de variables en las ventanas Automático y Variables locales.

Mientras depura, mire la ventana Automático de la parte inferior del editor de código.

Ventana Automático

Ventana Automático

Nota

En JavaScript, se admite la ventana Variables locales, pero no la ventana Automático.

A continuación, mire la ventana Variables locales. En la ventana Variables locales se muestran las variables del ámbito actual.

Ventana Locales

Ventana Locales

En este ejemplo, el objeto this y el objeto f están en el ámbito. Para obtener más información, vea Inspeccionar las variables en las ventanas automático y variables locales.

Visualización de valores devueltos de llamadas de método

En el código de .NET y C++, puede examinar los valores devueltos en la ventana de Automático al continuar la ejecución tras interactuar con una llamada de método, lo cual puede ser útil cuando el valor devuelto no se almacena en una variable local. Para obtener más información, vea Ver valores devueltos de llamadas a métodos.

A partir de la versión 17.12 Preview 3 de Visual Studio 2022, también puede ver los valores devueltos de las llamadas de método en línea y no solo en la ventana Autos.

Captura de pantalla que muestra los valores devueltos de las llamadas al método.

Establecimiento de un reloj

Puede usar una ventana Inspección para especificar una variable (o una expresión) que quiera supervisar. Para obtener más información, vea Establecimiento de una inspección con las ventanas Inspección e Inspección rápida.

Mientras depura, haga clic con el botón derecho en un objeto y elija Agregar inspección.

Ventana Inspección

Ventana Inspección

En este ejemplo, se ha establecido una inspección para el objeto y puede ver cómo cambia su valor conforme avanza en el depurador. A diferencia de las otras ventanas de variables, en la ventana Inspección siempre se muestran las variables que se están viendo (y se atenúan cuando están fuera del ámbito).

Examinar la pila de llamadas

En la ventana Pila de llamadas se muestra el orden en el que se llama a los métodos y las funciones. La línea superior muestra la función actual. La segunda línea muestra la función o la propiedad desde la que se llamó, etc. La pila de llamadas es una buena manera de examinar y comprender el flujo de ejecución de una aplicación. Para obtener más información, vea el artículo sobre cómo examinar la pila de llamadas.

Nota

La ventana Pila de llamadas es similar a la perspectiva de depuración de algunos IDE, como Eclipse.

Mientras depura, haga clic en la ventana Pila de llamadas, que está abierta de forma predeterminada en el panel inferior derecho.

Examinar la pila de llamadas

Examinar la pila de llamadas

Puede hacer doble clic en una línea de código para ver el código fuente, lo que también cambia el ámbito actual inspeccionado por el depurador. Eso no hace avanzar el depurador.

También puede usar los menús contextuales de la ventana Pila de llamadas para hacer otras cosas. Por ejemplo, puede insertar puntos de interrupción en funciones concretas, reiniciar la aplicación mediante Ejecutar hasta el cursor y examinar el código fuente.

Inspección de una excepción

Cuando la aplicación produce una excepción, el depurador le lleva a la línea de código que ha producido esa excepción. Para obtener información detallada, consulte Inspección de una excepción mediante el asistente de excepciones.

Asistente de excepciones

En este ejemplo, el asistente de excepciones muestra una excepción de System.NullReferenceException y un mensaje de error que indica que la referencia de objeto no está establecida en una instancia del objeto. Además, nos indica que el valor de cadena era NULL cuando intentó llamar al método Trim.

Asistente de Excepciones

En este ejemplo, el Asistente de excepciones muestra una excepción System.Argument y un mensaje de error que indica que la ruta de acceso no tiene un formato válido. Por lo tanto, sabemos que se produjo el error en un método o argumento de función.

En este ejemplo, la llamada DirectoryInfo dio el error en la cadena vacía almacenada en la variable value.

El asistente de excepciones es una característica excelente que puede ayudarle a depurar errores. También se pueden hacer cosas como ver detalles de errores y agregar una inspección desde el Asistente de excepciones. O bien, si fuera necesario, se pueden cambiar las condiciones para producir la excepción concreta. Para más información sobre cómo controlar las excepciones en el código, vea Técnicas y herramientas de depuración.

Expanda el nodo Configuración de excepciones para ver más opciones para controlar este tipo de excepción sin necesidad de cambiar nada de este paseo.

Sugerencia

Si tiene Copilot, puede obtener asistencia de inteligencia artificial mientras depura excepciones. Solo tiene que buscar el botón Preguntar a CopilotCaptura de pantalla del botón Preguntar a Copilot.. Para obtener más información, consulte Depurar con Copilot.

Obtención de ayuda para la inteligencia artificial

Si tiene Copilot, puede obtener asistencia de inteligencia artificial mientras depura. Para obtener más información, consulte Depurar con Copilot. Durante la depuración, también puede buscar el botón Captura de pantalla del botón Preguntar a Copilot. Preguntar a Copilot. En estos escenarios, Copilot ya conoce el contexto de sus preguntas, por lo que no es necesario proporcionar contexto en el chat de Copilot.

Configuración de depuración

Puede configurar el proyecto para que se compile como una configuración de depuración o versión, establecer las propiedades del proyecto para la depuración o establecer la configuración general para la depuración. Además, puede configurar el depurador para mostrar información personalizada mediante características como el atributo DebuggerDisplay o, para C/C++, el framework NatVis .

Las propiedades de depuración son específicas de cada tipo de proyecto. Por ejemplo, puede especificar un argumento para pasar a la aplicación al iniciarla. Para acceder a las propiedades específicas del proyecto, haga clic con el botón derecho en el proyecto en el Explorador de soluciones y seleccione Propiedades. Normalmente, las propiedades de depuración aparecen en la pestaña Compilación o la pestaña Depuración, en función del tipo de proyecto determinado.

A partir de Visual Studio 2022, la pestaña Depurar para proyectos de .NET proporciona un vínculo a la interfaz de usuario de perfiles de inicio de depuración, donde puede establecer propiedades relacionadas con la depuración.

Propiedades del proyecto

Propiedades del proyecto

Depurar aplicaciones ASP.NET activas en Azure App Service

Para depurar en Azure App Service, consulte Depuración de aplicaciones de Azure.

Para Visual Studio Enterprise (solo), el Snapshot Debugger toma una instantánea de las aplicaciones en producción cuando se ejecuta el código que le interesa. Para indicar al depurador que tome una instantánea, establezca puntos de acoplamiento y puntos de registro en el código. El depurador le permite ver exactamente qué salió mal, sin afectar el tráfico de la aplicación de producción. Snapshot Debugger puede ayudarle a reducir drásticamente el tiempo necesario para resolver los problemas que se producen en entornos de producción.

Iniciar el depurador de instantáneas

La recopilación de instantáneas está disponible para aplicaciones de ASP.NET que se ejecutan en el servicio de aplicaciones de Azure. ASP.NET las aplicaciones deben ejecutarse en .NET Framework 4.6.1 o posterior, y las aplicaciones de ASP.NET Core deben ejecutarse en .NET Core 2.0 o versiones posteriores en Windows.

Para obtener más información, vea Depurar aplicaciones de ASP.NET Azure activas con el depurador de instantáneas.

Ver instantáneas con la función de retroceso de IntelliTrace (Visual Studio Enterprise)

La característica step-back de IntelliTrace toma automáticamente una instantánea de la aplicación en cada punto de interrupción y evento de paso del depurador. Las instantáneas grabadas le permiten volver a los puntos de interrupción o pasos anteriores y ver el estado de la aplicación tal como estaba en el pasado. La característica step-back de IntelliTrace puede permitirle ahorrar tiempo cuando desea ver el estado anterior de la aplicación, pero no desea reiniciar la depuración ni volver a crear el estado de aplicación que se desea.

Puede navegar y ver instantáneas utilizando los botones Retroceder un paso y Avanzar un paso en la barra de herramientas de Depuración. Estos botones permiten navegar por los eventos que aparecen en la pestaña Eventos de la ventana Herramientas de diagnóstico.

botones retroceder y avanzar

Para obtener más información, vea la página Inspeccionar el estado de aplicación anterior mediante step-back de IntelliTrace en Visual Studio.

Depurar problemas de rendimiento

Si la aplicación se ejecuta demasiado lentamente o usa demasiada memoria, es posible que deba probar la aplicación con las herramientas de generación de perfiles al principio. Para obtener más información sobre las herramientas de generación de perfiles, como la herramienta uso de CPU y el Analizador de memoria, consulte Primer vistazo a las herramientas de generación de perfiles.

En este tutorial, ha echado un vistazo rápido a muchas características del depurador. Es posible que quiera ahondar en alguna de estas características, como los puntos de interrupción.