Mientras voy trabajando con Visual Studio 2010 voy usando algunas de las nuevas mejoras, entre ellas IntelliTrace. Esta herramienta sólo está disponible con Visual Studio 2010 Ultimate, es decir que ni la versión Express ni la Professional la incluyen.
Generalmente al desarrollar cualquier software se emplea cientos de veces el debugger del IDE para averiguar qué ha ocurrido para que el software tenga un comportamiento anómalo o distinto de lo diseñado. En este caso el sistema es simple: introducimos breakpoints en el código y a través del análisis de las variables locales y de la pila de llamadas vamos analizando la secuencia del flujo de programa e investigando a través de los valores locales qué es lo que ha podido ocurrir. Sin embargo, muchas veces hemos perdido el tiempo colocando el breakpoint en el lugar adecuado. En determinadas ocasiones queremos ver por qué hemos llegado a determinado punto, y eso obliga a que si ese punto en concreto no lo hemos marcado como breakpoint no podemos retornar a él salvo que cancelemos la ejecución actual, marquemos ese punto como breakpoint y volvamos a ejecutar para ver qué ha podido ocurrir. En una aplicación pequeña no supone mucho esfuerzo salvo por la incomodidad de tener que terminar la depuración y volver a compilar/ejecutar, pero si la aplicación es grande y consume bastantes recursos, nos conviene optimizar dicho tiempo para evitar perderlo. Resumiendo, podemos debuggear sólo en el punto donde tenemos puesto el breakpoint y seguir la secuencia de eventos.
Es a partir del punto anterior donde nace la principal ventaja de IntelliTrace: podemos retroceder al “pasado” y ver todos los eventos que ocurren únicamente dentro de ese contexto para poder observar realmente lo que pasa dentro de él. De este modo, podemos evitar los incómodos rearranques con nuevo ajuste de breakpoint para averiguar lo que ocurre dentro de ese contexto.
La imagen superior es la ventana de IntelliTrace. Aparece en cuanto comenzamos a depurar la aplicación, mediante un breakpoint y está junto al explorador de soluciones. En un primer vistazo a la ventana apreciamos dos estados: el inicio de la aplicación y el estado actual, donde reside el breakpoint. Podemos configurarlo de modo que sólo trabaje con determinadas categorías (ADO,ASP, Registro, Ficheros, etc) y también especificar en qué hilos queremos que IntelliTrace analice la depuración.
Si hacemos clic en cualquiera de los pasos de la imagen anterior, podemos analizar el estado de las variables en ese paso y el estado de la pila de llamadas:
Además podemos personalizar cómo queremos que realice la exploración. Por ejemplo, podemos indicarle que además de analizar todo lo que hemos visto hasta ahora, que analice también la secuencia de llamadas, que es el modo “avanzado” de analizar que dispone. Para ello bien podemos ir al icono de configuración de IntelliTrace o a través de opciones de Visual Studio 2010:
Dándole un vistazo por las opciones de configuración de IntelliTrace, podemos seleccionar qué módulos queremos que sean analizados, el tamaño del fichero donde se almacena el análisis y qué eventos queremos incluir en el análisis. En la sección General de la configuración de IntelliTrace, seleccionando eventos e informaciones de llamada, podemos obtener más datos de depuración. Como ventaja es que se almacena cada llamada, salida y valor de parámetros. En el caso de que un parámetro sea un array, sólo almacena las 256 primeras posiciones. Y en el caso de que sea un objeto, sólo almacena la información más relevante.