Obtenga información sobre sugerencias y trucos de productividad para el depurador en Visual Studio

Lea este tema para obtener información sobre algunas sugerencias y trucos de productividad para el depurador de Visual Studio. Para obtener las características básicas del depurador, vea Primer vistazo al depurador. En este tema, se abordarán algunas áreas que no se incluyen en el recorrido por las características.

Métodos abreviados de teclado

Para obtener una lista de los métodos abreviados de teclado más comunes relacionados con la depuración, consulte la sección Depuración en Métodos abreviados de teclado.

Anclaje de sugerencias de datos

Si habitualmente mantiene el mouse sobre las sugerencias de datos durante la depuración, es posible que quiera anclar la sugerencia de datos de la variable para obtener un acceso rápido. La variable permanece anclada incluso después de reiniciar. Para anclar la sugerencia de datos, haga clic en el icono de anclaje mientras mantiene el mouse sobre él. Puede anclar varias variables.

Anclaje de una sugerencia de datos

También puede personalizar las sugerencias de datos de otras maneras, como mantener expandida una sugerencia de datos (una sugerencia de datos rápida) o hacer que una sugerencia de datos sea transparente. Para obtener más información, consulte Ver los valores de datos en sugerencias de datos en el editor de código.

Edición del código y continuación de la depuración (C#, VB, C++)

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.

Edición de código XAML y continuación de la depuración

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.

Incidencias de depuración que son difíciles de reproducir

Si es difícil o se tarda demasiado en volver a crear un estado determinado en la aplicación, considere si el uso de un punto de interrupción condicional puede resultar útil. Puede usar puntos de interrupción condicionales y filtrar los puntos de interrupción para evitar la interrupción del código de la aplicación hasta que la aplicación entre en un estado deseado (por ejemplo, un estado en el que una variable almacena datos incorrectos). Puede establecer las condiciones mediante expresiones, filtros, recuentos de visitas, etc.

Para crear un punto de interrupción condicional

  1. Haga clic con el botón derecho en el icono de un punto de interrupción (la esfera de color rojo) y elija Condiciones.

  2. En la ventana Configuración del punto de interrupción, escriba una expresión.

    Punto de interrupción condicional

  3. Si le interesa otro tipo de condición, seleccione Filtro en lugar de Expresión condicional en el cuadro de diálogo Configuración del punto de interrupción y, después, siga las sugerencias de filtro.

Configuración de los datos que se van a mostrar en el depurador

Para C#, Visual Basic y C++ (solo código de C++/CLI), puede indicar al depurador qué información se debe mostrar mediante el atributo DebuggerDisplay. Para el código de C++, puede hacer lo mismo con las visualizaciones de Natvis.

Asociación de forma repetida a la misma aplicación

Cuando se usa la característica asociar al proceso, puede volver a asociar rápidamente a un proceso al que se asoció con anterioridad eligiendo Depurar>Reasociar al proceso (Mayús+Alt+P). Cuando se elige este comando, el depurador intentará asociarse de inmediato al último proceso al que se haya asociado intentando buscar una coincidencia con el identificador de proceso anterior y, si no obtiene resultados, con el nombre del proceso anterior. Si no se encuentran coincidencias, o si hay varios procesos con el mismo nombre, se abrirá el cuadro de diálogo Asociar al proceso para que pueda seleccionar el proceso correcto.

Seguimiento de un objeto fuera de ámbito (C#, Visual Basic)

Es fácil ver las variables mediante ventanas del depurador, como la ventana Inspección. Pero cuando una variable sale del ámbito en la ventana Inspección, es posible que observe que está atenuada. En algunos escenarios de aplicación, el valor de una variable puede cambiar incluso cuando la variable está fuera del ámbito, y es posible que quiera verla con más detalle (por ejemplo, una variable puede ser objeto de la recolección de elementos no utilizados). Puede realizar el seguimiento de la variable si crea un identificador de objeto para ella en la ventana Inspección.

Para crear un identificador de objeto

  1. Establezca un punto de interrupción cerca de una variable de la que quiera realizar el seguimiento.

  2. Inicie el depurador (F5) y deténgase en el punto de interrupción.

  3. Busque la variable en la ventana Variables locales (Depuración > Ventanas > Variables locales), haga clic con el botón derecho en la variable y seleccione Crear el identificador del objeto.

    Creación de un identificador de objeto

  4. Debería ver el símbolo $ junto con un número en la ventana Locales . Esta variable es el identificador del objeto.

  5. Haga clic con el botón derecho en la variable de identificador del objeto y elija Agregar inspección.

Para obtener más información, vea Creación de un identificador del objeto.

Visualización de valores devueltos para funciones

Para ver los valores devueltos para las funciones, examine las funciones que aparecen en la ventana Automático mientras ejecuta el código paso a paso. Para ver el valor devuelto de una función, asegúrese de que la función que le interesa ya se haya ejecutado (presione F10 una vez si está detenido actualmente en la llamada de función). Si la ventana está cerrada, use Depurar > Ventanas > Automático para abrir la ventana Automático.

Ventana Automático

Además, puede escribir funciones en la ventana Inmediato para ver los valores devueltos. (Para abrirla, seleccione Depurar > Ventanas > Inmediato).

Ventana Inmediato

También puede usar pseudovariables en las ventanas Inspección e Inmediato, como $ReturnValue.

Inspección de cadenas en un visualizador

Cuando se trabaja con cadenas, puede resultar útil ver toda la cadena con formato. Para ver una cadena de texto sin formato, XML, HTML o JSON, haga clic en el icono de lupa VisualizerIcon mientras mantiene el mouse sobre una variable que contenga un valor de cadena.

Abrir un visualizador de cadena

Un visualizador de cadenas puede ayudarle a determinar si una cadena tiene un formato incorrecto, en función del tipo de cadena. Por ejemplo, un campo Valor en blanco indica que el tipo de visualizador no reconoce la cadena. Para obtener más información, vea Visualizador de cadenas (cuadro de diálogo).

Visualizador de cadenas JSON

En el caso de otros tipos, como los objetos DataSet y DataTable que aparecen en las ventanas del depurador, también puede abrir un visualizador integrado.

Analizar el uso de memoria

Puede tomar y comparar instantáneas del montón, optimizar el uso de memoria y buscar una fuga de memoria mediante herramientas de uso de memoria. Para obtener más información, consulte Elección de una herramienta de análisis de memoria.

Crear un archivo de volcado de memoria

Un archivo de volcado de memoria es una instantánea que muestra el proceso que se estaba ejecutando y los módulos que se cargaron para una aplicación en un momento dado. Un volcado con información de montón también incluye una instantánea de la memoria de la aplicación en ese momento. Los volcados de memoria se usan principalmente para depurar problemas de máquinas a las que los desarrolladores no tienen acceso.

Si necesita guardar un archivo de volcado de memoria, seleccione Depurar> Guardar volcado como.

Para analizar un archivo de volcado de memoria, elija Abrir > Archivo en Visual Studio. Para iniciar la depuración con el archivo de volcado de memoria, seleccione Depurar solo con código administrado, Depurar solo con código nativo, Depurar con código mixto o Debug with Managed Memory (Depurar con memoria administrada).

Para obtener más información, vea Archivos de volcado de memoria.

Interrupción del código en excepciones controladas

El depurador interrumpe el código en las excepciones no controladas. Pero las excepciones controladas (como las que se producen dentro de un bloque try/catch) también pueden ser una fuente de errores y es posible que quiera investigarlas cuando se produzcan. Puede configurar el depurador para que interrumpa el código para excepciones controladas, además de establecer opciones en el cuadro de diálogo Configuración de excepciones. Para abrir este cuadro de diálogo, elija Depurar > Ventanas > Configuración de excepciones.

En el cuadro de diálogo Configuración de excepciones puede indicar al depurador que interrumpa el código en excepciones concretas. En la ilustración siguiente, el depurador interrumpe el código cada vez que se produce una excepción System.NullReferenceException. Para obtener más información, vea Administración de excepciones.

Cuadro de diálogo de configuración de excepciones

Cambio del flujo de ejecución

Con el depurador en pausa en una línea de código, use el mouse para seleccionar el puntero de flecha amarillo situado a la izquierda. Mueva el puntero de flecha amarillo a otro punto en la ruta de ejecución del código. Después, presione F5 o un comando de paso para continuar con la ejecución de la aplicación.

Movimiento del puntero de ejecución

Al cambiar el flujo de ejecución, puede, por ejemplo, comprobar las diferentes rutas de ejecución de código o volver a ejecutar código sin tener que reiniciar el depurador. Para obtener más información, vea Movimiento del puntero de ejecución.

Advertencia

A menudo es necesario tener cuidado con esta característica, ya que puede ser que vea una advertencia en la información en pantalla. También puede ser que reciba otras advertencias. El hecho de mover el puntero no permite revertir la aplicación a un estado anterior.

Depuración de interbloqueos y condiciones de carrera

Si tiene que depurar los tipos de incidencias comunes a las aplicaciones multiproceso, a menudo resulta útil ver la ubicación de los subprocesos durante la depuración. Puede hacerlo fácilmente con el botón Mostrar subprocesos en código fuente.

Para mostrar los subprocesos en el código fuente:

  1. Durante la depuración, haga clic en el botón Mostrar subprocesos en origenMostrar subprocesos en origen en la barra de herramientas Depurar.

  2. Examine el margen interno izquierdo de la ventana. En esta línea, verá un icono marcador de subprocesoMarcador de subproceso que se parece a dos hilos de coser. El marcador de subproceso indica que un subproceso se ha detenido en esa ubicación.

    Observe que un punto de interrupción puede ocultar parcialmente un marcador de subproceso.

  3. Desplace el puntero sobre el marcador de subproceso. Aparece la Información sobre datos. En ella se indican el nombre y el número de id. de subproceso de cada subproceso detenido.

    También puede ver la ubicación de los subprocesos en la ventana Pilas paralelas.

Familiarizarse con el modo en que el depurador se asocia a la aplicación (C#, C++, Visual Basic, F#)

Para adjuntar a la aplicación en ejecución, el depurador carga los archivos de símbolos (.pdb) generados para la misma compilación exacta de la aplicación que se intenta depurar. En algunos escenarios, un pequeño conocimiento sobre los archivos de símbolos puede ser útil. Puede examinar cómo carga Visual Studio los archivos de símbolos mediante la ventana Módulos.

Para abrir la ventana Módulos durante la depuración, seleccione Depurar > Ventanas > Módulos. La ventana Módulos puede indicar qué módulos trata el depurador como código de usuario, o bien Mi código, y el estado de carga de símbolos para el módulo. En la mayoría de los escenarios, el depurador busca automáticamente el código de usuario en los archivos de símbolos, pero si quiere depurar paso a paso por instrucciones código de .NET, del sistema o de bibliotecas de terceros, se necesitan pasos adicionales para obtener los archivos de símbolos correctos.

Ver información de símbolos en la ventana Módulos

Puede cargar la información de símbolos directamente desde la ventana Módulos si hace clic con el botón derecho y selecciona Cargar símbolos.

En ocasiones, los desarrolladores de aplicaciones las envían sin los archivos de símbolos coincidentes (para reducir la superficie), pero conservan una copia de los archivos de símbolos coincidentes de la compilación para más adelante poder depurar una versión de lanzamiento.

Para averiguar cómo clasifica el depurador el código como código de usuario, vea Solo mi código. Para obtener más información sobre los archivos de símbolos, vea Especificación de archivos de código fuente y símbolos (.pdb) en el depurador de Visual Studio.

Más información

Para obtener sugerencias y trucos adicionales, e información más detallada, vea estas entradas de blog:

Métodos abreviados de teclado