Untersuchen der App mit verlaufsbezogenem Debuggen (C#, Visual Basic, C++)

Sie können verlaufsbezogenes Debuggens Debuggen verwenden, um die Ausführung Ihrer Anwendung rückwärts und vorwärts zu durchlaufen und ihren Status zu überprüfen.

Sie können IntelliTrace in der Visual Studio Enterprise Edition verwenden, jedoch nicht in der Professional oder Community Edition.

Beginnen wir mit einem einfachen Programm, das einen Fehler aufweist. Fügen Sie in einer C#-Konsolenanwendung folgenden Code hinzu:

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

Wir gehen davon aus, dass der erwartete Wert des resultInt nach dem Aufruf von AddIterative() 20 beträgt (das Ergebnis des Inkrementierens von testInt × 20). (Gehen wir außerdem davon aus, dass Ihnen der Fehler in AddInt() nicht angezeigt wird). Das Ergebnis beträgt jedoch tatsächlich 44. Wie finden wir den Fehler, ohne AddIterative() schrittweise 10 Mal durchzugehen? Wir können das verlaufsbezogene Debugging verwenden, um Fehler schneller und leichter zu finden. Gehen Sie dabei folgendermaßen vor:

  1. Stellen Sie unter Extras > Optionen > IntelliTrace > Allgemein sicher, dass IntelliTrace aktiviert ist, und wählen Sie IntelliTrace-Ereignisse und -Aufrufinformationen aus. Wenn Sie diese Option nicht auswählen, wird Ihnen der Navigationsbundsteg nicht angezeigt (sie Erläuterung weitere unten).

  2. Legen Sie einen Haltepunkt in der Zeile Console.WriteLine(resultInt); fest.

  3. Beginnen Sie mit dem Debuggen. Der Code wird bis zum Haltepunkt ausgeführt. Im Fenster Lokal wird Ihnen für resultInt der Wert 44 angezeigt.

  4. Öffnen Sie das Fenster Diagnosetools (Debuggen > Diagnosetools anzeigen). Das Code-Fenster sieht wie folgt aus:

    Code window at the breakpoint

  5. Neben dem linken Rand sollte ein doppelter Pfeil angezeigt werden, genau über dem Haltepunkt. Dieser Bereich wird als Navigationsbundsteg bezeichnet und dient zum verlaufsbezogenen Debuggen. Klicken Sie auf den Pfeil.

    Im Codefenster sollte Ihnen die vorangegangene Codezeile (int resultInt = AddIterative(testInt);) rosa gefärbt angezeigt werden. Über dem Fenster sollte eine Meldung angezeigt werden, dass Sie sich nun im verlaufsbezogenes Debugging befinden.

    Das Codefenster sieht nun folgendermaßen aus:

    code window in historical debugging mode

  6. Jetzt können Sie per Einzelschritt auf die Methode AddIterative() zugreifen (F11 oder Schaltfläche Einzelschritt auf dem Navigationsbundsteg). Navigieren Sie schrittweise vorwärts (F10 oder Zum nächsten Aufruf wechseln auf dem Navigationsbundsteg). Die rosa Linie befindet sich jetzt in der j = AddInt(j);-Zeile. Durch Drücken von F10 gelangen Sie in diesem Fall nicht in die nächste Codezeile. Stattdessen fährt es mit dem nächsten Funktionsaufruf fort. Das verlaufsbezogene Debugging navigiert von Aufruf zu Aufruf, und überspringt Codezeilen, die nicht in einem Funktionsaufruf enthalten sind.

  7. Nun in die AddInt()-Methode einsteigen. Der Fehler in diesem Code sollte Ihnen sofort angezeigt werden.

Dieses Verfahren behandelt die Möglichkeiten des verlaufsbezogenen Debugging nur oberflächlich.