Dominando el Depurador de Visual Studio: Trucos y Técnicas de Productividad

El depurador de Visual Studio es una herramienta indispensable para cualquier desarrollador. Permite inspeccionar el flujo de ejecución de un programa, examinar el estado de las variables y comprender el comportamiento de la aplicación en tiempo real. Sin embargo, dominar sus funcionalidades va más allá de la simple detención en puntos de interrupción. Este artículo explora una serie de sugerencias y trucos de productividad diseñados para optimizar el proceso de depuración, desde la gestión avanzada de variables hasta la depuración de aplicaciones web y móviles.

Gestión Avanzada de Variables y Datos

Una de las tareas más frecuentes durante la depuración es la inspección de variables. Visual Studio ofrece varias formas de hacer esto de manera más eficiente. 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.

Anclaje de indicadores de datos en Visual Studio

Además del anclaje, puede personalizar sugerencias de datos de varias otras maneras. Por ejemplo, puede mantener expandida una sugerencia de datos (una sugerencia de datos pegajosa) o hacer que una sugerencia de datos sea transparente. Estas opciones permiten adaptar la visualización de datos a sus necesidades específicas, facilitando la observación de información crucial sin obstruir la vista del código.

La ventana "Watch" es otra herramienta fundamental para monitorear variables. 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). Para estos casos, debería ver un símbolo $ junto con un número en la ventana "Locales", indicando la presencia de información relevante incluso fuera del alcance directo.

Para ver los valores de retorno de sus 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). Además, puede escribir funciones en la ventana "Inmediato" para ver los valores devueltos, lo que proporciona una flexibilidad adicional para evaluar resultados de funciones específicas.

Ventana Autos y Autos en Visual Studio

Al trabajar con cadenas, la visualización puede ser un desafío. Puede resultar útil ver toda la cadena con formato. 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, señalando un posible problema de formato o codificación.

Optimización del Flujo de Depuración

La edición de código en tiempo de ejecución es una característica poderosa que ahorra tiempo al evitar reinicios constantes. 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. Esto es especialmente útil cuando se corrigen errores menores o se prueban pequeñas modificaciones sin tener que recompilar y reiniciar toda la aplicación.

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. Puede 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). Esto permite que el depurador se detenga solo cuando se cumplen ciertas condiciones, ahorrando tiempo y enfocando la depuración en escenarios específicos.

Puntos de interrupción Visual Studio C#

La capacidad de adjuntarse rápidamente a procesos previamente depurados es otra gran ventaja de productividad. 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.

Cambiar el flujo de ejecución durante la depuración puede ser una técnica avanzada pero muy útil. Con el depurador en pausa en una línea de código, use el mouse para seleccionar el puntero de flecha amarilla situado a la izquierda. Mueva el puntero de flecha amarilla a un punto diferente en la ruta de ejecución del código. 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. 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.

Depuración de Aplicaciones Web y ASP.NET

Visual Studio ofrece soporte robusto para la depuración de aplicaciones ASP.NET y ASP.NET Core. Los servidores Kestrel y IIS Express integrados se incluyen con Visual Studio. Kestrel es el servidor de depuración predeterminado para proyectos ASP.NET Core y está preconfigurado. También puede depurar una aplicación de ASP.NET o ASP.NET Core en un servidor IIS local (versión 8.0 o posterior) configurado para ejecutar la aplicación. Si no está instalado, instale ASP.NET y la carga de trabajo de desarrollo web. Instale y configure CORRECTAMENTE IIS con las versiones adecuadas de ASP.NET o ASP.NET Core. Para obtener más información sobre el uso de IIS con ASP.NET Core, consulte "Host ASP.NET Core en Windows con IIS".

Un perfil predeterminado denominado https o uno basado en el nombre del proyecto puede estar presente, que están configurados para el servidor web Kestrel. La interfaz de usuario presentada corresponde a la configuración del archivo launchSettings.json del proyecto. URL especifica la ubicación del host para .NET Core o .NET 5+. Para un perfil que tenga el mismo nombre que el proyecto (es decir, la propiedad commandName en launchSettings.json es Project), el servidor Kestrel escucha el puerto especificado. Para un perfil de IIS, suele ser el mismo valor que la dirección URL de la aplicación. En Variables de entorno, asegúrese de que ASPNETCORE_ENVIRONMENT esté presente con un valor de Development.

Para iniciar la depuración, puede seleccionar el nombre del perfil en la barra de herramientas (como https o IIS Expresso <nombre de perfil de IIS>), seleccionar "Iniciar depuración" en el menú "Depurar" o presionar F5. El depurador se detendrá en los puntos de interrupción. Si no ve la pestaña "Web", consulte "Depurar aplicaciones de ASP.NET Core".

Configuración de lanzamiento en Visual Studio para aplicaciones web

Para depurar la aplicación, establezca puntos de interrupción en algún código del proyecto. Para iniciar la depuración, seleccione IIS Express () o IIS local () en la barra de herramientas, seleccione "Iniciar depuración" en el menú "Depurar" o presione F5. El depurador se detendrá en los puntos de interrupción.

Si inicia la aplicación web desde IIS y se asegura de que se ejecuta correctamente, puede adjuntarse al proceso. En Visual Studio, seleccione Depurar > Asociar al proceso o presione Ctrl+Alt+P y conéctese al proceso ASP.NET o ASP.NET Core (normalmente w3wp.exe o dotnet.exe). Si puede conectarse y alcanzar el punto de interrupción mediante "Asociar al proceso", pero no mediante "Depurar > Iniciar depuración" o F5, es probable que un valor de configuración sea incorrecto en las propiedades del proyecto.

Por defecto, los proyectos de ASP.NET tienen archivos web.config, que contienen tanto la configuración de la aplicación como la información de inicio, incluida la configuración de depuración. Los archivos web.config deben estar configurados correctamente para la depuración. Los proyectos de ASP.NET Core no tienen inicialmente archivos web.config, pero usan archivos appsettings.json y launchSettings.json para la configuración de la aplicación y la información de inicio.

Web.config es un archivo XML, por lo que contiene secciones anidadas marcadas por etiquetas. Localice la sección configuration/system.web/compilation. Asegúrese de que el atributo debug del elemento compilation esté establecido en true. Por ejemplo:

<compilation debug="true" targetFramework="4.6.1" ... />

ASP.NET detecta automáticamente los cambios en los archivos web.config y aplica las nuevas opciones de configuración. Un sitio web puede contener varios directorios virtuales y subdirectorios, con archivos web.config en cada uno. Las aplicaciones ASP.NET heredan las opciones de configuración de archivos web.config en niveles superiores del camino de URL. Las configuraciones del archivo jerárquico web.config se aplican a todas las aplicaciones ASP.NET debajo de ellos en la jerarquía. Es importante recordar que el modo de depuración reduce considerablemente el rendimiento de la aplicación.

Depuración en Dispositivos Android

La configuración del depurador en dispositivos Android es crucial para el desarrollo móvil. La aplicación de Configuración en Android incluye una pantalla llamada "Opciones para desarrolladores" que te permite configurar comportamientos del sistema que te ayudan a generar perfiles y depurar el rendimiento de tu app. En tu dispositivo, busca la opción "Número de compilación" y tócala varias veces hasta que aparezca un mensaje indicando que eres un desarrollador. En la parte superior de la pantalla "Opciones para desarrolladores", hay un interruptor que permite activar o desactivar las opciones. Mantén este interruptor activado.

Para poder usar el depurador y otras herramientas, debes habilitar la depuración, que permite que Android Studio y otras herramientas del SDK se comuniquen con tu dispositivo. Habilita la opción "Depuración por USB" en la configuración del sistema del dispositivo, que se encuentra en "Opciones para desarrolladores". También puedes habilitar la "Depuración por Wi-Fi" en la configuración del sistema del dispositivo, también en "Opciones para desarrolladores". Después de habilitar la depuración por Wi-Fi en el dispositivo, vincúlalo a tu computadora de desarrollo.

Opciones de desarrollador en Android

Cuando hayas seleccionado una o varias de las tarjetas disponibles (por ejemplo, en el panel de Configuración rápida), abre el panel de Configuración rápida y presiona el lápiz para ingresar al modo de edición. La opción "Activar el modo de demostración" te permite cambiar el aspecto de la barra de estado mediante los comandos de modo de demostración adb.

Otras opciones útiles en "Opciones para desarrolladores" incluyen:

  • Habilitar el registro de búsqueda de la interfaz de controlador de host (HCI) de Bluetooth: Captura todos los paquetes de HCI de Bluetooth en un archivo almacenado en /sdcard/btsnoop_hci.log.
  • Habilitar la depuración por USB: Asegura que tu dispositivo Android pueda comunicarse con tu máquina de desarrollo por medio de Android Debug Bridge (adb).
  • Esperar al depurador: Esta opción no estará disponible hasta que uses "Seleccionar la aplicación para depurar".
  • Almacenar de forma persistente: Selecciona el tipo de mensajes de registro que quieras almacenar permanentemente en el dispositivo.
  • Habilitar inspección de atributos de vista: Guarda la información de atributos de vista en la variable miembro de mAttributes de la instancia View para usar en la depuración. Puedes acceder a la información del atributo por medio de la interfaz de usuario del "Inspector de diseños".
  • Habilitar depuración GPU: Disponible en dispositivos que ejecutan Android 9 (nivel de API 28) y versiones posteriores.
  • Frecuencia de muestreo del audio Bluetooth: Ajusta la cantidad de muestras de audio por segundo.
  • Bits por muestra del audio Bluetooth: Permite establecer la cantidad de bits de información en cada muestra de audio.
  • Habilitar registro detallado de Wi-Fi: Aumenta el nivel de registro Wi-Fi para cada red inalámbrica (SSID) a la que te conectes según su potencia relativa de señal recibida (RSSI).
  • Mostrar presiones: Muestra las presiones cada vez que toques la pantalla. Aparecerá un círculo debajo de tu dedo o lápiz óptico que seguirá tus movimientos al desplazarte por la pantalla.
  • Ubicación del puntero: Muestra la ubicación del puntero (presión) en el dispositivo con puntos de mira. Aparecerá una barra en la parte superior de la pantalla para rastrear las coordenadas de los puntos de mira.
  • Forzar diseño der. Escala de animación de ventana: Establece la velocidad de reproducción de animaciones de la ventana para que puedas comprobar su rendimiento en diferentes velocidades.
  • Escala de animación de transición: Establece la velocidad de reproducción de animación de la transición de manera que puedas comprobar su rendimiento a diferentes velocidades.
  • Depurar superpos. Depurar operaciones de recorte no rectangulares: Desactiva el área de recorte en el lienzo para crear áreas de lienzo poco comunes (no rectangulares).
  • Desactivar superpos. HW: Inhabilita la superposición de hardware. Ten en cuenta que, si usas la superposición de hardware, las apps que muestran un elemento en la pantalla consumen menos capacidad de procesamiento. Sin la superposición, las apps comparten la memoria de video y deben comprobar constantemente que no se produzcan colisiones ni recortes para renderizar una imagen de forma correcta.
  • Inhab. enrutam. audio USB: Activa esta opción para inhabilitar el enrutamiento automático a dispositivos de audio externos conectados a una computadora mediante un puerto USB. En Android 11 y versiones posteriores, cuando una aplicación sin el permiso RECORD_AUDIO usa UsbManager para solicitar acceso directo a un dispositivo de audio USB con capacidad de captura de audio (como un auricular USB), aparece un mensaje de advertencia en el que se le pide permiso al usuario para utilizar el dispositivo. El sistema ignora cualquier opción del tipo "usar siempre", de modo que el usuario debe reconocer la advertencia y otorgar el permiso cada vez que una app solicite acceso.
  • Represent. GPU del perfil: Presiona esta opción y luego "En pantalla como barras" para visualizar el perfil de renderización de la GPU en forma de barras.
  • Límite de procesos en segundo plano: Establece la cantidad de procesos que pueden ejecutarse a la vez en segundo plano.
  • Restablecer la limitación de frecuencia de ShortcutManager durante la prueba: Permite que las apps que están en segundo plano continúen llamando a las API de accesos directos hasta alcanzar nuevamente el límite de frecuencia.
  • Inhabilitar protecciones cuando compartes pantalla: Desactiva las protecciones del sistema para apps con contenido sensible en las próximas sesiones donde se comparta la pantalla.

Manejo de Excepciones y Archivos de Símbolos

El depurador interrumpe el código en excepciones no controladas. Sin embargo, las excepciones controladas (como las excepciones que se producen dentro de un bloque try/catch) también pueden ser un origen de errores y es posible que desees investigar cuándo se producen. Puedes 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".

Configuración de excepciones en Visual Studio

El cuadro de diálogo "Configuración de excepciones" permite indicar al depurador que interrumpa el código en excepciones específicas. Por ejemplo, puedes configurar el depurador para que interrumpa el código cada vez que se produce una System.NullReferenceException.

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ás intentando depurar. En algunos escenarios, un poco de conocimiento de los archivos de símbolos puede ser útil. Abre la ventana "Módulos" durante la depuración seleccionando Depurar > Módulos. La ventana "Módulos" puede indicarte qué módulos está tratando el depurador como código de usuario ("Mi código") y el estado de carga de símbolos para el módulo. Para averiguar cómo el depurador clasifica el código como código de usuario, consulta "Solo mi código".

Depuración Multihilo y Personalización del Entorno

Si necesitas depurar los tipos de problemas comunes a las aplicaciones multiproceso, a menudo ayuda ver la ubicación de los subprocesos durante la depuración. Mira el canalón en el lado izquierdo de la ventana. En una línea de código relevante, verás un icono marcador de hilo que se parece a dos hilos de tela. Pasar el puntero sobre el marcador de hilo muestra un consejo de datos, indicando la presencia de múltiples hilos en ese punto de ejecución.

Cuando se configura Visual Studio, se solicita la elección de un conjunto de configuraciones IDE predeterminadas para el lenguaje de programación principal. Algunos elementos de menú solo aparecen cuando el depurador se encuentra en modos concretos, como el modo de ejecución o el modo de interrupción. Algunos comandos, sobre todo los que se encuentran en los menús jerárquicos, no se pueden restaurar en el cuadro de diálogo "Personalizar". En la página "Elija una colección de configuraciones para importar", bajo la carpeta "Configuración predeterminada", selecciona la colección de configuraciones de desarrollo que incluya los comandos que deseas utilizar. En la página "Elija la configuración que desee importar", bajo "Opciones", asegúrate de que la opción "Depuración" esté seleccionada.

Solución de Problemas Comunes con el Depurador de Firefox

Aunque este artículo se centra principalmente en Visual Studio, es importante abordar problemas específicos que algunos usuarios han reportado con depuradores de navegadores, como el de Firefox. Se ha observado que en Firefox Developer y Firefox normal, el depurador no aparece o no funciona correctamente, incluso después de reinstalar el navegador. Este problema parece ser persistente y ocurre en diferentes sistemas operativos y máquinas, lo que sugiere que no es un problema de configuración de usuario individual.

La falta de información clara y descriptiva sobre cómo abrir el nuevo depurador de Firefox correctamente ha sido una fuente de frustración. Si bien otras herramientas de depuración pueden funcionar sin problemas, el depurador de Firefox ha presentado este inconveniente durante meses. La ausencia de discusiones o soluciones en línea sobre este error específico es desconcertante. Si te encuentras con este problema, es recomendable consultar la documentación oficial de Mozilla o los foros de soporte de Firefox para obtener las últimas actualizaciones y posibles soluciones.

Puntos de interrupción Visual Studio C#

Herramientas de Diagnóstico de Memoria

Para optimizar el uso de memoria y detectar posibles fugas, Visual Studio ofrece herramientas avanzadas. 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. 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. Para analizar un archivo de volcado de memoria, elija "Abrir archivo >" en Visual Studio. Estas herramientas son invaluables para diagnosticar problemas de rendimiento y estabilidad relacionados con la gestión de memoria.

tags: #no #me #aparecen #las #ventanas #del