jueves, 6 de octubre de 2011

Utilizar IntelliTrace sin Visual Studio 2010

ATENCIÓN: Este procedimiento OBLIGA a tener licencia de Visual Studio 2010 Ultimate.
Como definición rápida (que me perdonen los puristas) el IntelliTrace es una herramienta que permite llevar un registro de todo lo que sucede con una aplicación, de forma que a posteriori somos capaces de reproducir 'exactamente' lo que pasó en una sesión concreta. La idea de esta herramienta es acabar con la mítica situación de "en mi equipo funciona" ¿quién no la ha utilizado alguna vez? Para una definición más exacta podemos visitar este enlace.
Una de las particularidades de esta herramienta es que sólamente está disponible de forma directa desde Visual Studio 2010 Ultimate, y se activa o desactiva a nivel general desde las opciones del producto:


 Bueno, como 'reza' el título de este post, esto no es estrictamente necesario, de forma que podemos utilizar también esta herramienta en equipos en los que no está instalado Visual Studio (ojo porque lo que no está permitido es utilizar esta herramienta en un entorno de producción.
Vamos al 'turrón' ¿Cómo utilizamos esta maravilla sin Visual Studio?
  1. Creamos una carpeta en una ubicación temporal y la llamamos (originales nosotros) IntelliTrace.
  2. En esta carpeta copiamos el contenido de la carpeta "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\TraceDebugger Tools"
  3. A continuación copiamos el archivo "Microsoft.VisualStudio.IntelliTrace.dll" que está en la carpeta "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies"
  4. Por último copiamos el archivo "TraceLogProfiler.dll" que está en la carpeta "C:\Program Files (x86)\Common Files\Microsoft Shared\VSTS 10.0\Trace Debugger"
  5. Ahora viene una parte 'chunga'. tenemos que obtener lo que se denomina como "CollectionPlan" que es un archivo de configuración que se genera al utilizar IntelliTrace desde Visual Studio. Para obtener este archivo, tenemos que activar el IntelliTrace (captura anterior) y configurar en esas mismas opciones el nivel de traza deseado. Cargamos un proyecto, y vamos a la carpeta "C:\Users\usuario\AppData\Local\Microsoft\VisualStudio\10.0\TraceDebugger\Settings" aquí veremos un archivo de nombre variable, que copiaremos también a la carpeta temporal y renombraremos a algo más claro, como por ejemplo "Collector.xml".
  6. Editamos este archivo con el bloc de notas, y nos aseguramos de que en las entradas "LogFileDirectory" y "DeleteLogOnExit" están configuradas de manera adecuada (ojo porque el primer parámetro puede tener que ser cambiado en la máquina en la que queremos ejecutar el IntelliTrace:


    Para más información acerca de este archivo, visitar el siguiente enlace.
Una vez hemos realizado estas operaciones, el contenido de nuestra carpeta temporal será algo parecido a esto:

Ya tenemos todo preparado para hacer la traza... Sólo queda coger esa carpeta y llevarla a la máquina en la que queremos sacar la traza, y ejecutar la herramienta desde la línea de comandos:
IntelliTrace.exe launch /cp:Collector.xml rutadelprogramaatrazar\programa.exe
Cuando el ejecutable termine, tendremos en la carpeta del IntelliTrace un archivo con extensión .iTrace, que contiene toda la información de la ejecución. Este archivo ya podemos abrirlo con Visual Studio 2010 y ahora disponemos de una 'grabación' de lo que ha pasado en la ejecución (fundamental para detectar errores)
NOTAS:
Aunque venga con Visual Studio 2010, esta herramienta NO necesita el Framework 4.0 y en principio es capaz de sacar trazas de programas desarrollados desd ela versión 2.0 del Framework en adelante.
En el equipo destino puede producirse un error al lanzar el programa, que se ve cuando al abrir el archivo de traza está vacío... Una de las causas que he visto es porque el componente "TraceLogProfiler.dll" no esté registrado en la máquina, si se da el caso, basta con ejecutar un regsvr32 TraceLogProfiler.dll
En la versión de 2010, sólamente podemos realizar trazas sobre programas compilados en 32 bits, pero instalando el Service Pack 1 en principio esta limitación ya no existe, si bien yo no he podido probarlo.
Sin embargo, sí puedo confirmar que modificando el valor de la entrada "AttachOptions" del archivo Collector.xml a Attach64Bit, el intellitrace funciona con un programa ejecutándose en 64 bits!
RESULTADO
A modo informativo, así es como se ve una traza de este estilo:


REFERENCIAS
Esta información ha sido recopilada partiendo de las siguientes entradas:
http://www.techmetadata.com/2010/04/standalone-intellitrace-from-vs-2010.html
Además más información en castellano en el blog del gran Unai Zorrilla, acceso

No hay comentarios: