Udostępnij za pośrednictwem


Inspekcja aplikacji za pomocą debugowania historycznego IntelliTrace w programie Visual Studio (C#, Visual Basic, C++)

Możesz użyć debugowania historycznego, aby przejść do tyłu i do przodu przez wykonanie aplikacji i sprawdzić jej stan.

Funkcji IntelliTrace można używać w wersji Visual Studio Enterprise, ale nie wersji Professional lub Community.

Zacznijmy od prostego programu, który zawiera usterkę. W aplikacji konsolowej języka C# dodaj następujący kod:

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;
}

Załóżmy, że oczekiwana wartość resultInt po wywołaniu AddIterative() wynosi 20 (wynik przyrostu testInt 20 razy). (Załóżmy również, że nie można zobaczyć usterki w pliku AddInt()). Ale wynik jest rzeczywiście 44. Jak można znaleźć usterkę bez przechodzenia przez AddIterative() 10 razy? Możemy użyć debugowania historycznego, aby szybciej i łatwiej znaleźć usterkę. Oto jak to zrobić:

  1. W obszarze Opcje > narzędzi > IntelliTrace Ogólne upewnij się, że funkcja IntelliTrace jest włączona, a następnie wybierz pozycję Zdarzenia IntelliTrace > i informacje o wywołaniu. Jeśli nie wybierzesz tej opcji, nie będzie można wyświetlić rynny nawigacji (jak wyjaśniono poniżej).

  2. Ustaw punkt przerwania w Console.WriteLine(resultInt); wierszu.

  3. Uruchom debugowanie. Kod jest wykonywany w punkcie przerwania. W oknie Ustawienia lokalne widać, że wartość to resultInt 44.

  4. Otwórz okno Narzędzia diagnostyczne (Debuguj > Pokaż narzędzia diagnostyczne). Okno kodu powinno wyglądać następująco:

    Code window at the breakpoint

  5. Powinna zostać wyświetlona podwójna strzałka obok lewego marginesu tuż nad punktem przerwania. Ten obszar jest nazywany gutter nawigacji i służy do debugowania historycznego. Kliknij strzałkę.

    W oknie kodu powinien zostać wyświetlony poprzedni wiersz kodu (int resultInt = AddIterative(testInt);) w kolorze różowym. Nad oknem powinien zostać wyświetlony komunikat, który jest teraz w debugowaniu historycznym.

    Okno kodu wygląda teraz następująco:

    code window in historical debugging mode

  6. Teraz możesz przejść do AddIterative() metody (F11 lub przycisk Przejdź do w rynnach nawigacji). Krok do przodu (F10 lub Przejdź do następnego wywołania w gutter nawigacji). Różowa linia znajduje się teraz na j = AddInt(j); linii. W tym przypadku klawisz F10 nie wykonuje kroku do następnego wiersza kodu. Zamiast tego należy wykonać kroki do następnego wywołania funkcji. Debugowanie historyczne przechodzi z wywołania do wywołania i pomija wiersze kodu, które nie zawierają wywołania funkcji.

  7. Teraz przejdź do AddInt() metody . W tym kodzie powinna natychmiast zostać wyświetlona usterka.

Ta procedura po prostu porysowała powierzchnię tego, co można zrobić za pomocą debugowania historycznego.