Primer vistazo al depurador de Visual Studio

En este tema se presentan las herramientas de depuración que proporciona Visual Studio. En el contexto de Visual Studio, depurar la aplicación normalmente significa ejecutar la aplicación con el depurador asociado (es decir, en modo depurador). Al hacerlo, el depurador ofrece muchas formas de ver lo que hace el código durante la ejecución. Esto permite revisar el código y fijarse en los valores almacenados en las variables, establecer inspecciones en ellas para ver cuándo cambian esos valores, examinar la ruta de ejecución del código, etc. Si esta es la primera vez que intenta depurar código, es posible que quiera leer Depuración para principiantes sin experiencia antes de continuar con 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 explican aquí son aplicables a C#, C++, Visual Basic, JavaScript y otros lenguajes compatibles con Visual Studio (a menos que se indique lo contrario).

Establecer un punto de interrupción e iniciar el depurador

Los puntos de interrupción son una característica útil cuando se conoce la línea o la sección de código que se quiere examinar en 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 hacerlo:

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

Pero de momento es posible que no haya establecido ningún punto de interrupción para examinar el código de la aplicación, por lo que eso es lo que se va a hacer primero y luego se va a iniciar la 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 Visual Studio debe suspender la ejecución de código para poder echar un vistazo a los valores de las variables o al comportamiento de la memoria, o determinar si se está ejecutando o no una bifurcación de código.

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

Establecimiento de un punto de interrupción

Establecimiento de 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 para que el depurador se ejecute hasta el primer punto de interrupción que encuentre. Si la aplicación todavía no se está ejecutando, F5 inicia el depurador y lo detiene en el primer punto de interrupción.

Se proporcionan métodos abreviados de teclado para la mayoría de los comandos porque hacen que la exploración del código de las aplicaciones 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 comandos de paso, vea Navegación por el código con 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.

F11 Depurar paso a paso por instrucciones

F11 Depurar paso a paso por instrucciones

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 forma de examinar el flujo de ejecución con más detalle. (Además se muestran otras opciones para moverse más rápido por el código). De forma predeterminada, el depurador omite el código que no es de usuario (si quiere más detalles, vea Solo mi código).

Nota

En código administrado, aparece un cuadro de diálogo que le pregunta si quiere recibir una notificación cuando salte automáticamente 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 saltar el código que no le interese. De este modo, puede llegar rápidamente al código que más le interesa. 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 desplazarse 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 Ejecutar hasta clic (Ejecutar hasta aquí) Captura de pantalla del botón Ejecutar hasta clic del depurador de Visual Studio. Este botón indica que la ejecución debe proceder hasta la línea donde está el botón. aparece 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 donde se ha hecho 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 pulse 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 otras características de navegación similares, consulte Ejecución hasta una ubicación determinada en el código.

Ejecutar hasta el cursor

Ejecutar hasta el cursor

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

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

Este comando resulta útil cuando se edita código y se quiere 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.

Reiniciar la aplicación rápidamente

Haga clic en el botón Reiniciar Reiniciar aplicación de la barra de herramientas de depuración (o pulse Ctrl + Mayús +F5).

El botón Reiniciar permite ahorrar tiempo, ya que hace que no sea necesario detener la aplicación y reiniciar el depurador. El depurador se detiene en el primer punto de interrupción que se alcanza al ejecutar el código.

Si quiere detener el depurador y volver al editor de código, puede presionar el botón rojo de parada Detener depuración en lugar de Reiniciar.

Edición del código activo

Visual Studio 2022 admite la edición del código activo durante la depuración. Para obtener información detallada, vea:

Edición del código y continuación de 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 las ediciones y presione F5, F10 o 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 frecuente 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 más útiles del depurador, y hay diferentes formas de hacerlo. Con frecuencia, cuando intenta depurar un problema, está intentando averiguar si las variables están almacenando los valores que espera que tengan en un estado determinado de la aplicación. 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 información sobre datos

Visualización de información sobre datos

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

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.

Inspeccionar variables con las ventanas Automático y Variables locales

En la ventana Automático se ven las variables y su tipo y su valor actual. En la ventana Automático se muestran todas las variables que se usan en la línea actual o la anterior (en C++, la ventana muestra las variables de las tres líneas de código anteriores. Consulte la documentación para comportamiento específico de lenguaje). 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 variables locales

Ventana variables 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.

Ver los valores devueltos por las llamadas a métodos

En el código de .NET y C++, puede examinar los valores devueltos en la ventana Automático al pasar o salir de una llamada de método, lo que puede ser útil cuando el valor devuelto no se almacena en una variable local. Para obtener más información, consulte Visualización de 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 insertadas y no solo en la ventana Automático.

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

Establecer una inspección

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ó y así sucesivamente. La pila de llamadas es una buena forma de examinar y entender 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.

Examen de la pila de llamadas

Examen de la pila de llamadas

Puede hacer doble clic en una línea de código para ver ese código fuente. De este modo, también puede cambiar el ámbito que el depurador va a inspeccionar. 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 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 se 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, se sabe que el error se ha producido en un argumento de método o función.

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

El Asistente de excepciones es una característica excelente que puede ayudar 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 ayuda de IA mientras depura excepciones. Solo tiene que buscar el botón Preguntar a Copilot Captura de pantalla del botón Preguntar Copilot.. Para obtener más información, consulte Depuración con Copilot.

Obtenga asistencia de IA

Si dispone de Copilot, puede obtener ayuda con la IA mientras depura. Para obtener más información, consulte Depuración con Copilot. Durante la depuración, también puede buscar el botón Preguntar a CopilotCaptura de pantalla del botón Preguntar Copilot.. En estos escenarios, Copilot ya conoce el contexto de sus preguntas, por lo que no es necesario que le proporcione a Copilot el contexto en el chat.

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 marco NatVis.

Las propiedades de depuración son específicas de cada tipo de proyecto. Por ejemplo, puede especificar un argumento que se pasa a la aplicación cuando se inicia. 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. Las propiedades de depuración suelen aparecer en la pestaña Compilar o Depurar, en función del tipo de proyecto específico.

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 Depurador de instantáneas 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. El Depurador de instantáneas puede permitirle disminuir considerablemente el tiempo que tarda en resolver los problemas que se producen en los entornos de producción.

Inicio de Snapshot Debugger

La recopilación de instantáneas está disponible para las aplicaciones ASP.NET que se ejecutan en Azure App Service. Las aplicaciones ASP.NET deben ejecutarse en .NET Framework 4.6.1 o versiones posteriores y las aplicaciones ASP.NET Core 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 las instantáneas con step-back 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 registradas le permiten volver a puntos de interrupción anteriores y ver el estado de la aplicación tal y como estaba en un momento anterior. 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.

Para poder navegar y ver las instantáneas, use los botones Retroceder paso a paso y Avanzar paso a paso en la barra de herramientas de depuración. Estos botones permiten navegar por los eventos que aparecen en la pestaña Eventos en la ventana Herramientas de diagnóstico.

Botones Retroceder paso a paso y Avanzar paso a paso

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.

Depuración de problemas de rendimiento

Si la aplicación se ejecuta con demasiada lentitud o usa demasiada memoria, es posible que deba probarla con las herramientas de generación de perfiles en una fase temprana. Para obtener más información sobre herramientas de generación de perfiles como Uso de CPU y Analizador de memoria, vea un 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.