Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Lea este tema para obtener información sobre algunas sugerencias y trucos de productividad para el depurador de Visual Studio. Para ver las características básicas del depurador, consulte Primer vistazo al depurador. En este tema, tratamos algunas áreas que no se incluyen en el recorrido de funciones.
Atajos 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 Depurar en Métodos abreviados de teclado.
Anclar recomendaciones sobre datos
Si con frecuencia pasa el ratón sobre indicadores de datos durante la depuración, quizás desee anclar el indicador de datos de la variable para proporcionar un acceso rápido. La variable permanece anclada incluso después de reiniciarse. Para anclar la sugerencia de datos, haga clic en el icono de anclaje mientras mantiene el puntero sobre él. Puede anclar varias variables.
También puede personalizar sugerencias de datos de varias otras maneras, como mantener expandida una sugerencia de datos (una sugerencia de datos pegajosa) o hacer que una sugerencia de datos sea transparente. Para obtener más información, consulte Visualización de valores de datos en Información sobre datos en el editor de código.
Edite el código y continúe 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 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 las limitaciones de características, consulte Editar y continuar.
Edición del 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 activa de XAML.
Solucionar problemas difíciles de reproducir
Si es difícil o lento volver a crear un estado determinado en la aplicación, considere si el uso de un punto de interrupción condicional puede ayudar. Puedes usar puntos de interrupción condicionales y filtrar puntos de interrupción para evitar dividir el 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 condiciones mediante expresiones, filtros, recuentos de aciertos, etc.
Para crear un punto de interrupción condicional
Haga clic con el botón derecho en un icono de punto de interrupción (la esfera roja) y elija Condiciones.
En la ventana Configuración del punto de interrupción , escriba una expresión.
Si está interesado en 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, a continuación, 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 mostrar con el atributo DebuggerDisplay . Para el código de C++, puede hacer lo mismo mediante visualizaciones de Natvis.
Adjuntar a la misma aplicación repetidamente
Al usar la característica adjuntar al proceso, puede volver a adjuntarse rápidamente a un proceso al que estaba anteriormente adjunto eligiendo Depurar>Volver a adjuntar al proceso (Mayús+Alt+P). Al elegir este comando, el depurador intentará inmediatamente anexarse al último proceso al que te conectaste, primero intentando coincidir con el identificador del proceso anterior y, si eso falla, haciendo coincidir con el nombre del proceso anterior. Si no se encuentran coincidencias o si varios procesos tienen el mismo nombre, se abrirá el cuadro de diálogo Asociar al proceso para que pueda seleccionar el proceso correcto.
Realizar un seguimiento de un objeto fuera del ámbito (C#, Visual Basic)
Es fácil ver variables mediante ventanas de depuración, como la ventana Watch. Sin embargo, cuando una variable sale del alcance en la ventana Inspección, es posible que observe que aparece en gris. En algunos escenarios de la aplicación, el valor de una variable puede cambiar incluso cuando la variable está fuera del alcance, y puede querer observarla de cerca (por ejemplo, una variable puede ser objeto de recolección de basura). Puede realizar un seguimiento de la variable mediante la creación de un identificador de objeto para ella en la ventana Inspección .
Para crear un identificador de objeto
Establezca un punto de interrupción cerca de una variable a la que desea realizar un seguimiento.
Inicie el depurador (F5) y deténgase en el punto de interrupción.
Busque la variable en la ventana Variables locales (Depurar > variables locales de Windows>), haga clic con el botón derecho en la variable y seleccione Crear identificador de objeto.
Debería ver el símbolo $ junto con un número en la ventana Locales. Esta variable es el identificador de objeto.
Haga clic con el botón derecho en la variable de ID de objeto y elija Agregar vigilancia.
Para obtener más información, vea Crear un identificador de objeto.
Visualización de valores devueltos para funciones
Para ver los valores de retorno de tus funciones, examine las funciones que aparecen en la ventana Autos mientras depura el código. 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 se ha detenido actualmente en la llamada de función). Si la ventana está cerrada, use Depurar > Ventanas > Autos para abrir la ventana Autos.
Además, puede escribir funciones en la ventana Inmediato para ver los valores devueltos. (Ábralo mediante Depurar > Windows > Immediate).
También puede usar pseudovariables en la ventana Inspección y Inmediato, como $ReturnValue
.
Inspección de cadenas en un visualizador
Al trabajar con cadenas, puede resultar útil ver toda la cadena con formato. Para ver un texto sin formato, XML, HTML o texto JSON, haga clic en el icono de lupa al pasar el cursor sobre una variable que contiene un valor de cadena.
Un visualizador de cadenas puede ayudarte a averiguar si una cadena tiene un formato incorrecto, dependiendo del tipo de cadena. Por ejemplo, un campo Valor en blanco indica que el tipo del visualizador no reconoce la cadena. Para obtener más información, vea String Visualizer Dialog Box .
Para algunos otros tipos, como los objetos DataSet y DataTable que aparecen en las ventanas del depurador, también puede abrir un visualizador integrado.
Análisis del uso de memoria
Puede tomar y comparar instantáneas del montón, optimizar el uso de memoria y buscar una pérdida de memoria mediante herramientas de uso de memoria. Para obtener más información, consulte Elegir una herramienta de análisis de memoria.
Creación de un archivo de volcado de memoria
Un archivo de volcado de memoria es una instantánea que muestra el proceso que estaba en ejecución y los módulos que se cargaron para una aplicación en un momento específico. Un volcado de memoria con información del 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, seleccione Depurar > Guardar volcado como.
Para analizar un archivo de volcado de memoria, elija Abrir archivo > en Visual Studio. Para iniciar la depuración mediante el archivo de volcado de memoria, seleccione Depurar con solo administrado, Depurar solo con nativo, Depurar con mixto o Depurar con memoria administrada.
Para obtener más información, vea Volcado de archivos.
Dividir el código en excepciones controladas
El depurador interrumpe el código en excepciones no controladas. Sin embargo, las excepciones controladas (como las excepciones que se producen dentro de un try/catch
bloque) también pueden ser un origen de errores y es posible que desee investigar cuándo se producen. Puede configurar el depurador para dividir el código para las excepciones controladas, así como configurar opciones en el cuadro de diálogo Configuración de excepciones . Para abrir este cuadro de diálogo, elija Depurar > configuración de excepciones de Windows>.
El cuadro de diálogo Configuración de excepciones permite indicar al depurador que interrumpa el código en excepciones específicas. En la ilustración abajo, el depurador interrumpe el código cada vez que se produce un System.NullReferenceException
. Para obtener más información, consulte Administració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 amarilla a un punto diferente en la ruta de ejecución del código. A continuación, use F5 o un comando step para continuar ejecutando la aplicación.
Al cambiar el flujo de ejecución, puede hacer cosas como probar diferentes rutas de ejecución de código o volver a ejecutar código sin reiniciar el depurador. Para obtener más información, vea Movimiento del puntero de ejecución.
Advertencia
A menudo, debe tener cuidado con esta característica y verá una advertencia en la información sobre herramientas. También puede ver otras advertencias. Mover el puntero no puede revertir la aplicación a un estado anterior de la aplicación.
Depuración de interbloqueos y condiciones de carrera
Si necesita depurar los tipos de problemas comunes a las aplicaciones multiproceso, a menudo ayuda a ver la ubicación de los subprocesos durante la depuración. Puede hacerlo fácilmente utilizando el botón Mostrar subprocesos en origen.
Para mostrar los subprocesos en tu código fuente:
Durante la depuración, haga clic en el botón Mostrar subprocesos en el origen
en la barra de herramientas Depurar.
Mire el canalón en el lado izquierdo de la ventana. En esta línea, verá un icono marcador de hilo
que se parece a dos hilos de tela. El marcador de subproceso indica que un subproceso se detiene en esta ubicación.
Observe que un marcador de hilo puede estar parcialmente oculto por un punto de interrupción.
Pase el puntero sobre el marcador de hilo. Aparece un consejo de datos. El DataTip muestra el nombre y el ID del hilo para cada hilo detenido.
También puede ver la ubicación de los subprocesos en la ventana Pilas paralelas.
Familiarícese con el modo en que el depurador se asocia a la aplicación (C#, C++, Visual Basic, F#)
Para asociar 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 está intentando depurar. En algunos escenarios, un poco de conocimiento de los archivos de símbolos puede ser útil. Puede examinar cómo Visual Studio carga los archivos de símbolos mediante la ventana Módulos .
Abra la ventana Módulos durante la depuración seleccionando Depurar > módulos de Windows>. La ventana Módulos puede indicarle qué módulos está tratando el depurador como código de usuario, o Mi código, y el estado de carga de símbolos para el módulo. En la mayoría de los escenarios, el depurador encuentra automáticamente archivos de símbolos para el código de usuario, pero si desea inspeccionar paso a paso (o depurar) código .NET, código del sistema o código de bibliotecas de terceros, se necesitan pasos adicionales para obtener los archivos de símbolos correctos.
Puede cargar información de símbolos directamente desde la ventana Módulos haciendo clic con el botón derecho y seleccionando Cargar símbolos.
A veces, los desarrolladores de aplicaciones envían aplicaciones sin los archivos de símbolos coincidentes (para reducir la superficie), pero mantienen una copia de los archivos de símbolos coincidentes para la compilación para que puedan depurar una versión publicada más adelante.
Para averiguar cómo el depurador clasifica el código como código de usuario, consulte Solo mi código. Para obtener más información sobre los archivos de símbolos, vea Especificar archivos de símbolo (.pdb) y de código fuente en el depurador de Visual Studio.
Aprende más
Para obtener sugerencias y trucos adicionales e información más detallada, consulte estas entradas de blog: