Inspección de la aplicación con depuración histórica de IntelliTrace en Visual Studio (C#, Visual Basic, C++)
Puede usar la depuración histórica para desplazarse hacia atrás y hacia delante por la ejecución de la aplicación e inspeccionar su estado.
Puede usar IntelliTrace en Visual Studio Enterprise, pero no en las ediciones Professional o Community.
Desplazamiento por el código con depuración histórica
Comencemos con un sencillo programa que tiene un error. En una aplicación de consola C#, agregue el código siguiente:
static void Main(string[] args)
{
int testInt = 0;
int resultInt = AddIterative(testInt);
Console.WriteLine(resultInt);
}
private static int AddIterative(int j)
{
for (int i = 0; i < 20; i++)
{
j = AddInt(j);
}
return j;
}
private static int AddInt(int add)
{
if (add == 10)
{
return add += 25;
}
return ++add;
}
Supondremos que el valor esperado de resultInt
después de llamar a AddIterative()
es 20 (el resultado de incrementar testInt
20 veces). (También se supone que no puede ver el error en AddInt()
). Sin embargo, el resultado es 44. ¿Cómo podemos encontrar el error sin pasar por AddIterative()
10 veces? Podemos usar Depuración histórica para encontrar el error de forma más rápida y sencilla. Esta es la manera de hacerlo:
En Herramientas > Opciones > IntelliTrace > General, asegúrese de que IntelliTrace está habilitado y seleccione IntelliTrace events call information (Eventos e información de llamadas de IntelliTrace). Si no selecciona esta opción, no podrá ver el medianil de navegación (tal y como se explica más adelante).
Establezca un punto de interrupción en la línea
Console.WriteLine(resultInt);
.Inicie la depuración. El código se ejecuta hasta el punto de interrupción. En la ventana Locales puede ver que el valor de
resultInt
es 44.Abra la ventana Herramientas de diagnóstico (Depurar > Mostrar herramientas de diagnóstico). La ventana de código debe ser similar a la que se muestra a continuación:
Debería ver una flecha doble junto al margen izquierdo, justo encima del punto de interrupción. Esta área se denomina medianil de navegación y se utiliza para Depuración histórica. Haga clic en la flecha.
En la ventana de código, debería ver que la línea de código anterior (
int resultInt = AddIterative(testInt);
) es de color rosa. Encima de la ventana verá un mensaje que indica que ya está en Depuración histórica.La ventana de código ahora tiene el siguiente aspecto:
Ahora puede depurar paso a paso por instrucciones el método
AddIterative()
(F11 o el botón Depurar paso a paso por instrucciones en el medianil de navegación). Avanzar paso a paso (F10 o Ir a llamada siguiente en el medianil de navegación). La línea rosa se encuentra ahora en la líneaj = AddInt(j);
. En este caso, F10 no avanza a la siguiente línea de código. sino a la siguiente llamada de función. Depuración histórica va de una llamada a otra y omite las líneas de código que no incluyen una llamada de función.Ahora, depure paso a paso por instrucciones el método
AddInt()
. Debería ver el error en este código inmediatamente.
Contenido relacionado
Este procedimiento no ha hecho sino arañar la superficie de lo que se puede hacer con Depuración histórica.
- Para ver instantáneas durante la depuración, consulte Inspección de los estados de aplicación anteriores mediante IntelliTrace.
- Para obtener más información sobre las distintas configuraciones y los efectos de los botones diferentes en el medianil de navegación, consulte Características de IntelliTrace.