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 ejecutas la aplicación con el depurador asociado (es decir, en modo depuración). 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 observadores en variables para ver cuándo cambian los valores, puede examinar la ruta de acceso de ejecución del código, entre otras cosas. 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, en este momento es posible que no haya establecido ningún punto de interrupción para examinar el código de su aplicación, así que lo haremos primero y, a continuación, iniciaremos 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 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 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 Entra en

F11 Entrar en

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 por encima del 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.

Ir a un punto en tu código rápidamente usando el ratón

El uso del botón Run to Click 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 Run to Click 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 avanza el depurador) hasta que la función actual retorne.

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 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 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).

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

Cuando el depurador está pausado, pase el ratón sobre un objeto y verá su valor o su 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, ve las variables junto con su valor actual y su tipo. En la ventana de Automático 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 para conocer el comportamiento específico del 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 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 Autos cuando se avanza o se sale 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, 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.

Con Copilot habilitado, también puede obtener asistencia específica relacionada con el valor de retorno en línea mediante el botón Preguntar a Copilot que aparece en la sugerencia de datos para el valor de retorno.

Recorte de pantalla que muestra los valores devueltos de las llamadas al método con el icono de Copilot.

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 ese código fuente, lo cual 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 marco NatVis.

Las propiedades de depuración son específicas de cada tipo de proyecto. Por ejemplo, puede especificar un argumento para pasar a una 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. 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 cómo depurar 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 ASP.NET que se ejecutan en Azure App Service. 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.

Visualización de 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. El "paso atrás" de IntelliTrace le puede ahorrar tiempo cuando desea ver un estado anterior de la aplicación, pero no quiere reiniciar la depuración ni recrear el estado deseado de la aplicación.

Puede navegar y ver instantáneas utilizando los botones Paso hacia atrás y Paso hacia adelante en la barra de herramientas de Depuración. Estos botones navegan 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.