Inspecione seu aplicativo com a depuração histórica do IntelliTrace no Visual Studio (C#, Visual Basic, C++)
Você pode usar a depuração histórica para ir para trás e para frente ao longo da execução do aplicativo e inspecionar o estado dele.
Você pode usar o IntelliTrace na edição Visual Studio Enterprise, mas não nas edições Professional ou Community.
Navegar pelo código com a depuração histórica
Vamos começar com um programa simples que tem um bug. Em um aplicativo de console C#, adicione o seguinte código:
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;
}
Vamos supor que o valor esperado de resultInt
após chamar AddIterative()
seja 20 (o resultado de incrementar testInt
20 vezes). (Também vamos supor que você não possa ver o bug em AddInt()
). Mas o resultado é, na verdade, 44. Como podemos encontrar o bug sem percorrer AddIterative()
10 vezes? Podemos usar a depuração histórica para localizar o bug com mais rapidez e facilidade. Este é o procedimento:
Em Ferramentas > Opções > IntelliTrace > Geral, verifique se o IntelliTrace está habilitado e selecione Eventos do IntelliTrace e informações de chamada. Se você não selecionar essa opção, não poderá ver a medianiz de navegação (conforme explicado abaixo).
Defina um ponto de interrupção na linha
Console.WriteLine(resultInt);
.Inicie a depuração. O código é executado até o ponto de interrupção. Na janela Locais, você pode ver que o valor de
resultInt
é 44.Abra a janela Ferramentas de Diagnóstico (Depurar > Mostrar Ferramentas de Diagnóstico). A janela de código deve se parecer com esta:
Você deverá ver uma seta dupla ao lado da margem esquerda, logo acima do ponto de interrupção. Essa área é chamada de medianiz de navegação e é usada para depuração histórica. Clique na seta.
Na janela de código, você deve ver que a linha de código anterior (
int resultInt = AddIterative(testInt);
) é cor de rosa. Acima da janela, você verá uma mensagem informando que agora está na depuração histórica.A janela de código tem esta aparência:
Agora você pode intervir no método
AddIterative()
(F11 ou o botão Intervir na medianiz de navegação). Continue (F10 ou Ir para Próxima Chamada na medianiz de navegação). A linha rosa agora está na linhaj = AddInt(j);
. Nesse caso, F10 não vai para a próxima linha de código. Em vez disso, vai para a próxima chamada de função. A depuração histórica navega de chamada para chamada e ignora linhas de código que não incluem uma chamada de função.Agora, intervenha no método
AddInt()
. Você verá o bug nesse código imediatamente.
Conteúdo relacionado
Este procedimento descreveu apenas o básico do que você pode fazer com a depuração histórica.
- Para exibir instantâneos durante a depuração, confira Inspecionar estados de aplicativo anteriores usando o IntelliTrace.
- Para saber mais sobre as diferentes configurações e os efeitos dos diferentes botões na medianiz de navegação, confira Recursos do IntelliTrace.