Compartir
Contenidos contratados por la marca que se menciona

Depurar código en producción con Intellitrace de Visual Studio 2015

Depurar código en producción con Intellitrace de Visual Studio 2015
Guardar
0 Comentarios
Publicidad

Newsletter

Si eres programador seguramente la siguiente situación será familiar para ti: has creado una aplicación siguiendo todas las mejores prácticas que conoces y las has desplegado a producción. Todo funciona correctamente, hasta que notas ciertos problemas de performance en la aplicación.

Revisas las pruebas unitarias, las pruebas de integración, los entornos de producción, habilitas las trazas detalladas, pero no puedes encontrar nada, hay un error que sigue allí. Finalmente, vuelves a las bases, e intentas reproducir el error directamente desde el entorno de desarrollo con la aplicación en modo depuración interactuando con el IDE. ¿Te suena?

Cuando trabajas en este escenario con Visual Studio 2015, el proceso de depuración te brinda mucha información que ayuda a detectar estos errores. Por ejemplo, si tu aplicación utiliza XAML, tienes la capacidad de ver el en tiempo real el árbol de controles con Live Visual Tree y Live Property Explorer. También puedes ver datos en tiempo real sobre el consumo de memoria o la utilización de CPU, mientras realizas la depuración.

La siguiente imagen muestra un ejemplo donde es posible ver, como en modo depuración podemos acceder a las herramientas de diagnóstico, directamente desde el editor de código en un punto de interrupción y como además tenemos información adicional como el tiempo transcurrido desde el ultimo BreakPoint.

10 Click To Open The Diagnostic Tool Window

Muchas veces se pensamos que las actividades de depuración y profiling son actividades independientes. Depurar una sentencia LINQ es divertido, aunque pocas veces somos conscientes de lo importante que es tener en cuenta el rendimiento de la misma. Las nuevas herramientas de diagnóstico y depuración en Visual Studio nos ayudan a poder tener una vista en conjunto de esta información y de esta forma comprender mejor el comportamiento de nuestra aplicación.

El panel Diagnostic Tools registra todos los eventos de tipo PerfTips en modo gráfico y en una tabla para que los podamos estudiar. Esta Información se puede analizar en conjunto con el uso de CPU y de memoria.

Los elementos principales del panel Diagnostic Tools contiene:

  • Events details: una vista en modo tabla de los datos recogidos durante la ejecución de la aplicación
  • Events timeline: una representación visual de la ejecución de la aplicación en una línea de tiempo
  • Diagnostic Tools toolbar: contiene los botones seleccionar herramientas, Zoom In, Zoom Out, reset view

La sección de uso de memoria nos permite crear memory snaphots mientras se ejecuta la aplicación, o en un punto de interrupción. Estos memory snapshots luego pueden ser analizados para ver la ejecución de la aplicación en lo que conocemos como IntelliTrace.

12 Diagnostic Tools

Bienvenido IntelliTrace

Pues bien, es el momento de hablar de IntelliTrace. Una forma simple de definir IntelliTrace, es pensar que a este proceso de depuración le agregamos la capacidad de tener un registro histórico para cada uno de los eventos que se procesan. Esto significa que podremos repasar “una y otra vez” los diferentes pasos que se han seguido durante una sesión de depuración. IntelliTrace registra la pila de llamadas y las variables locales mientras la aplicación sigue ejecutándose. Las diferentes opciones de IntelliTrace están disponibles desde la sección general de opciones de Visual Studio, en el menú [Tools // Options]. Dentro del mismo podemos

  • Habilitar o deshabilitar IntelliTrace
  • Definir el ámbito y la información que queremos registrar en cada sesión de depuración.
    • La opción por defecto [IntelliTrace events only] captura solo los eventos que IntelliTrace considera importantes.
    • La segunda opción [IntelliTrace events and call information] captura los eventos y además cada llamada a operaciones con los valores de los parámetros que se utilizan. Esta opción tiene además un pequeño impacto en el rendimiento de la aplicación.
15 Intellitrace Options
  • Definir la ubicación donde se almacenarán los archivos de depuración y definir además un límite para el tamaño de los mismos. Este punto es importante, si la sesión es grande podemos encontrarnos archivos de 1GB o más
17 Intellitrace Options
  • Seleccionar los eventos que queremos capturar. Por ejemplo, podemos elegir solo elementos de lectura y escritura de archivos (FILE IO) para tener información solo de eventos de ese tipo
  • Definir los módulos a procesar. Por ejemplo, si solo queremos registrar los módulos de nuestra aplicación, podemos ignorar a “System.” y a “Microsoft.

Una vez configuradas las opciones de IntelliTrace, la siguiente sesión de depuración registrará toda la información de esta sesión a la que podremos acceder posteriormente. Los archivos generados tienen extensión [iTrace] y para abrir los mismos utilizaremos Visual Studio 2015. El nombre generado tiene el siguiente formato

[AppName][ProcessId][Date][Time].iTrace

Un ejemplo del mismo sería

App1.ManagementTool.vshost00003908150924_094712.iTrace

La vista por defecto de IntelliTrace nos muestra un historial de la ejecución de la aplicación con una escala de tiempo y una tabla que muestra los detalles de cada evento. La capacidad de depuración histórica nos permite volver atrás en el tiempo y ver la pila de llamadas y las variables locales de los eventos registrados en la sesión.

20 Intellitrace View

Cuando analizamos una sesión de Intellitrace podemos encontrar:

  • Información de excepciones registradas durante la sesión
  • Información de sistema donde se registró la sesión
  • Listado de Threads y Modulos .Net que se analizaron durante la sesión

En una sesión de análisis, el primero punto que se suele revisar es el listado de excepciones. Una vez filtrada e identificada una excepcione podemos ver los detalles de la misma, como por ejemplo la pila de llamadas que se produjeron hasta que se lanzó esa excepción.

25 Itrace Exception Details

Si entramos en modo “Debug”, podremos ver además que Visual Studio 2015 comienza a buscar los fuentes para poder asociar el punto correcto donde se lanzó la excepción. En este momento, podemos ver un diagrama DGML con una representación gráfica de la pila de llamadas hasta el momento de la excepción.

Lo más interesante, es que además, podemos comenzar un modo de depuración histórico donde podemos reproducir los pasos de ejecución de la aplicación. Dependiendo de las opciones con las que hayamos configurado IntelliTrace, en cada uno de los pasos podremos tener información contextual como los valores de los parámetros en cada llamada.

30 Itrace Exception Details

En cada paso de la depuración podemos además analizar de una forma muy completa la pila de llamadas, interpretando la misma por eventos o por llamadas.

37 Itrace Calls
37 Itrace Calls

Modos de utilizar IntelliTrace: Live e Historical

Ahora que tenemos una idea más clara de las capacidades de IntelliTrace en Visual Studio 2015, analicemos los 2 modos en que puede ser utilizado.

  • Live Intellitrace. Este modo es cuando se utiliza Visual Studio 2015 para iniciar la aplicación pulsando F5 . En este momento el IDE se conecta automáticamente al depurador, se inicia la aplicación y se adjunta a la misma. A partir de este momento, IntelliTrace registra automáticamente la ejecución de la aplicación sin tener que realizar algún paso adicional. Si en algún momento se detiene o pause la depuración, la información de IntelliTrace se actualiza y se muestran los datos recogidos hasta ese punto.

  • Historical IntelliTrace: En este modo el registro de datos no se realiza utilizando Visual Studio 2015 en modo depuración. La aplicación se ejecuta, por ejemplo en una máquina de prueba o producción y es en este entorno donde IntelliTrace crea un archivo iTrace con los datos de la sesión de depuración. Posteriormente, este archivo se puede abrir en Visual Studio y la experiencia de depuración es similar a la que tenemos con Live IntelliTrace.

El siguiente video de Channel 9 [Historical Debugging with IntelliTrace in Microsoft Visual Studio Ultimate 2015], nos muestra un excelente ejemplo sobre cómo utilizar IntelliTrace para detectar excepciones relacionadas con problemas de la mala utilización de ASYNC

IntelliTrace en Producción

Hasta aquí hemos visto las posibilidades que nos brinda IntelliTrace como un excelente complemento para las sesiones de depuración. Ahora bien, desde un punto de vista más práctico, es importante recordar que:

Los Programadores no somos buenos Testers.

Aquí hay mucho que comentar al respecto, sin embargo es mejor pasar a la 2da afirmación:

Los mejores Testers son los usuarios finales de una aplicación.

En este momento, seguramente estarás pensando que aquella vez en la que quisiste tener una herramienta como IntelliTrace instalada en el ordenador de un usuario final para ver qué pasos seguía para “colgar una aplicación”. Pues bien, Visual Studio 2015 nos brinda una herramienta de este tipo llamada “IntelliTrace StandAlone Collector” que se puede descargar desde la página de descargas de MSDN.

IntelliTrace StandAlone Collector puede grabar la ejecución de la aplicación en un equipo remoto creando un archivo iTrace. Es importante conocer los diferentes tipos de aplicaciones soportadas para este escenario, por ejemplo Aplicaciones hosteadas en IIS o aplicaciones de tipo desktop. En el artículo de MSDN “Recopilar datos de IntelliTrace fuera de Visual Studio con el recopilador independiente” se nos presenta el listado de aplicaciones soportadas, los pasos para instalar y configurar el standalone collector; y finalmente como utilizar el mismo.

Resumen

IntelliTrace ha madurado mucho desde su primera versión en Visual Studio 2010. En Visual Studio 2015, nos presenta una integración nativa con el panel de herramientas de diagnóstico que nos deja una herramienta muy completa para las sesiones de depuración. La utilización del modo Live y de las sesiones históricas, nos permiten acelerar mucho la detección de errores en nuestras aplicaciones.

En Visual Studio

References

Publicidad

También te puede gustar

Comentarios cerrados

Ver más artículos