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.

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

Para depurar, tiene que iniciar la aplicación con el depurador asociado al proceso de la aplicación. F5 (Depurar > Iniciar depuración) es la forma más habitual de hacerlo. 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

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.

Los puntos de interrupción son una característica de utilidad cuando se conoce la línea o la sección de código que se quiere examinar en detalle.

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

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 Step over properties and operators (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 > Saltar) 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.

Depurar paso a paso por instrucciones una propiedad

Como se ha mencionado anteriormente, el depurador omite de forma predeterminada las propiedades y los campos administrados, pero el comando Ir a específico permite invalidar este comportamiento.

Haga clic con el botón derecho en un campo o propiedad y elija Ir a específico. Luego elija una de las opciones disponibles.

Captura de pantalla del depurador de Visual Studio con una línea de código resaltada. La opción Ir a específico está seleccionada en el menú contextual con el método Path.set seleccionado.

En este ejemplo, Ir a específico lleva al código de Path.set.

Captura de pantalla del depurador de Visual Studio en la que se muestra el código de Path.set. Las llaves que rodean la función "set" están resaltadas en amarillo.

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

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

Captura de pantalla del depurador de Visual Studio en la que se muestra el botón Run to Click justo a la izquierda de una llamada a la función Update.

Nota

El botón Ejecutar hasta 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.

Usar este botón 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.

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 Depurar > Paso a paso para salir).

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.

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 presione 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 Detener depuración en lugar de Reiniciar.

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.

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

Para obtener más información sobre el uso de la característica y las limitaciones de esta, consulte Editar y continuar.

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.

Con el depurador detenido, mantenga el puntero sobre un objeto y vea su valor de propiedad predeterminado (en este ejemplo, el nombre de archivo market 031.jpg es el valor de propiedad predeterminado).

Visualización de una sugerencia de datos

Expanda el objeto para ver todas sus propiedades (como la propiedad FullPath en este ejemplo).

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.

Sugerencia

En la mayoría de los lenguajes compatibles, es posible editar código en mitad de una sesión de depuración. Para obtener más información, vea Editar código y seguir depurando.

Inspeccionar variables con 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

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. Vea la documentación para obtener información sobre el comportamiento específico del lenguaje).

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

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.

Establecer una inspección

Puede usar una ventana Inspección para especificar una variable (o una expresión) que quiera supervisar.

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

Ventana Inspección

En este ejemplo, hay una inspección establecida en el objeto f y puede ver cómo cambia su valor conforme avanza 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).

Para obtener más información, vea Variables de inspección con ventanas Inspección e Inspección rápida

Examinar la pila de llamadas

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

En la ventana Pila de llamadas se muestra el orden en el que se llama a los métodos y las funciones. En la línea superior se muestra la función actual (el método Update en este ejemplo). En la segunda línea se muestra que se ha llamado a Update desde la propiedad Path.set, etc. La pila de llamadas es una buena forma de examinar y entender el flujo de ejecución de una aplicación.

Nota

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

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. Vea Cómo: Examinar la pila de llamadas.

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

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.

Nota

El Asistente de excepciones ha reemplazado al Asistente de excepciones a partir de Visual Studio 2017.

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.

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.

Propiedades de proyecto

Depurar aplicaciones ASP.NET activas en Azure App Service

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

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

Pasos siguientes

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.