Intellitrace como tu sistema de rastreo

Hace ya un pequeño tiempo, observé desde la distancia una “discusión” acerca de las implementaciones de logging y tracing en nuestras aplicaciones. Lógicamente, muchos de los argumentos de este tipo de discusiones ya son más que de sobra conocidos, unos tiran por AOP otros les gusta la intercepción etc, etc.. Mi compañero Rodrigo, metido en esa conversación intentó primero hacer una diferenciación entre lo que realmente es logging, como información del proceso, y las trazas como información de rastreo únicamente válida para nosotros como desarrolladores. Después de este pequeño, pero importante inciso, alegó que pensar hoy en dia en “inventar” el sistema de trazas caía un poco dentro de “Reinventent the wheel” puesto que si trabajábamos en Visual Studio 2010 teníamos algo llamado Intellitrace.

Seguramente muchos conoceis intellitrace de vuestros procesos de depuración con VS, sin embargo, también es posible utilizar Intellitrace fuera de visual studio y llevarlo por ejemplo a un entorno de producción para hacer una sesión de depuración en caso de necesitarlo. A lo largo de la siguiente entrada veremos los pasos necesarios para realizar esta tarea, y como, gracias a Intellitrace, nuestras posibilidades en cuanto a las trazas se verán incrementadas enormemente:

 

  • Requisitos

Lo primero siempre es lo que necesitamos, y en este caso, los requisitos necesarios para correr intellitrace viene marcados por una serie de archivos que tendremos que llevar a nuestro entorno, es importante notar que no requiere instalación tradicional ninguna.

  1. Intellitrace.exe, %ProgramFiles%Microsoft Visual Studio 10.0Team ToolsTraceDebugger Tools.
  2. Intellitrace.exe.config,  %ProgramFiles%Microsoft Visual Studio 10.0Team ToolsTraceDebugger Tools.
  3. TraceLogProfiler.dll, %ProgramFiles%Microsoft Visual Studio 10.0Team ToolsTraceDebugger Tools.
  4. Microsoft.VisualStudio.Intellitrace.dll %ProgramFiles%Microsoft Visual Studio 10.0Common7IDEPublicAssemblies.
  5. CollectionPlan.xml,%ProgramFiles%Microsoft Visual Studio 10.0Team ToolsTraceDebugger Tools.
  • Puesta en marcha

Una vez que hemos llevado estos requisitos hasta nuestro entorno, veremos como ejecutar intelligrace para un proceso, en mi caso, para el ejemplo he creado una pequeña aplicación de consola que trabaja con una base de datos, escribe un fichero, y accede a registro. La idea, es poder observar todo este trabajo desde el resultado de la ejecución de intellitrace.

Levantaremos una linea de comandos y ejecutaremos algo como lo siguiente:

Intellitrace.exe launch cp:/CollectionPlan.xml /f:Out.itrace “pathsample.exe”

Si se fija, los dos parámetros importantes de esta llamada son cp:/CollectionPlain y /f:Out.xml. CollectionPlan.xml nos permite especificar que es lo que queremos recopilar en nuestra sesión de trazas, es decir, la información que deseamos ver. El segundo parámetro, por otro lado, nos permite establecer el fichero de salida, el cual después llevaremos hasta un entorno con Visual Studio sobre el que podamos ver y analizar los resultados. Antes de empezar la ejecución, abriremos nuestro fichero de collectionplan.xml, buscaremos el elemento TraceInstrumentation y estableceremos el atributo enabled a true.

  <TraceInstrumentation enabled="true">

  • Análisis de resultados

Bien, una vez que ya hemos ejecutado Intellitrace y obtenido el fichero de resultado ( nuestro *.iTrace) lo llevaremos hasta un equipo con Visual Studio, en este podremos ver algo similar a lo siguiente:

Untitled1

Realmente, aquí ya es similar a como si estuviésemos en una sesión de Visual Studio normal, podéis probar a ver los eventos de intellitrace, las llamadas a métodos, rebobinar etc etc….

 

  • Queremos más

La información de llamadas a métodos, variables, hilos o módulos cargados no siempre es suficiente. Gracias a nuestro archivo CollectionPlan.xml podemos ir configurando la información que deseamos incluir en nuestros ficheros de Intellitrace. Algunos eventos importantes son acceso a disco, ADO.NET, uso de registro etc etc… A continuación se puede ver la interacción con ADO.NET de nuestra pequeña aplicación de ejemplo.

untitled2

 

  • Ojo con el licenciamiento

En principio el uso de Intellitrace en producción es algo que se escapa a la licencia de Intellitrace, aunque es algo que no tengo tan claro si es solamente al soporte o una prohibición por algún motivo. Hay un post aquí dónde tocan este tema y se pueden extrar algunas conclusiones.

  • ´Más información

Sobre la linea de comando de intellitrace hay mucha información repartida en la web, para aquellos que deseais saber más os recomiendo empezar con algunos enlaces que os ayudarán en las primeras dudas:

http://blogs.msdn.com/b/ianhu/archive/2009/11/16/intellitrace-itrace-files.aspx

//especialmente interesante si quieres hacer intellitrace de algo que no sea un .exe, por ejemplo  IIS, un servicio de windows, etc..

http://blogs.msdn.com/b/msaffer/archive/2010/12/07/using-intellitrace-outside-the-ide.aspx

http://blogs.msdn.com/b/ianhu/archive/2010/05/25/intellitrace-links.aspx

Espero que esto os resulte de interes

 

Saludos

Unai

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *