Freigeben über


Zeitreise-Debugging – Überblick

Screenshot des Time Travel Debugging-Logos mit einer Uhr.

Was ist Time Travel Debugging?

Time Travel Debugging (TTD) ist ein Tool, das eine Spur Ihres Prozesses erfasst, während er ausgeführt wird und später sowohl vorwärts als auch rückwärts abgespielt wird. TTD hilft Ihnen beim Debuggen von Problemen, indem Sie Die Debuggersitzung "zurückspulen" können, anstatt das Problem reproduzieren zu müssen, bis Sie den Fehler gefunden haben.

MIT TTD können Sie rechtzeitig zurückkehren, um die Bedingungen, die zu dem Fehler führen, besser zu verstehen und mehrmals wiederzugeben, um zu erfahren, wie das Problem am besten behoben werden kann.

TTD hat Vorteile gegenüber Absturzabbilddateien, die häufig den Zustands- und Ausführungspfad verpassen, der zum ultimativen Fehler führte.

Wenn Sie das Problem selbst nicht herausfinden können, können Sie die Ablaufverfolgung mit einem Kollegen teilen, damit er genau das sehen kann, was Sie sehen. Dieses Feature erleichtert die Zusammenarbeit im Vergleich zum Livedebugging, da die aufgezeichneten Anweisungen identisch sind, während sich die Adressorte und die Code-Execution auf verschiedenen PCs unterscheiden. Sie können auch einen bestimmten Zeitpunkt teilen, um Ihren Kollegen zu helfen, herauszufinden, wo sie beginnen sollen.

TTD ist effizient und kann so wenig Aufwand wie möglich hinzufügen, da sie die Codeausführung in Ablaufverfolgungsdateien erfasst.

TTD enthält eine Reihe von Debugger-Datenmodell-Objekten, mit denen Sie die Ablaufverfolgung mit LINQ abfragen können. Sie können z. B. TTD-Objekte verwenden, um zu suchen, wann ein bestimmtes Codemodul geladen wurde, oder nach allen Ausnahmen suchen.

Screenshot von WinDbg mit Befehl

Anforderungen

Time Travel Debugging ist in WinDbg integriert und bietet eine nahtlose Aufzeichnung und Wiedergabe.

Um TTD zu verwenden, müssen Sie den Debugger mit erhöhten Berechtigungen ausführen. Installieren Sie WinDbg mithilfe eines Kontos mit Administratorrechten, und verwenden Sie dieses Konto beim Aufzeichnen im Debugger. Wenn Sie den Debugger mit erhöhten Berechtigungen ausführen möchten, halten Sie das WinDbg-Symbol im Startmenü gedrückt (oder klicken Sie mit der rechten Maustaste darauf), und wählen Sie dann "Als Administrator ausführen" >aus.

Versionshinweise

TTD entwickelt sich weiter. Die neuesten Informationen finden Sie in den Versionshinweisen zum Time Travel Debugging.

Die erstellte Ablaufverfolgungsdatei, die die Aufzeichnung enthält, kann personenbezogene oder sicherheitsbezogene Informationen enthalten, einschließlich, aber nicht unbedingt beschränkt auf Dateipfade, Registrierung, Speicher oder Dateiinhalte. Genaue Informationen hängen von der Zielprozessaktivität ab, während sie aufgezeichnet wurde. Beachten Sie dies beim Freigeben von Aufzeichnungsdateien für andere Personen.

TTD.exe Befehlszeilenaufzeichnungsprogramm

Neben der Aufzeichnung von Ablaufverfolgungen in der WinDbg-Benutzeroberfläche steht ein TTD.exe Befehlszeilenprogramm zum Aufzeichnen einer Ablaufverfolgung zur Verfügung.

Möglicherweise haben Sie Szenarien, in denen nur der TTD-Befehlszeilenrekorder erforderlich ist: Aufzeichnung auf einem PC ohne Installation des Debuggers, erweiterte Aufzeichnungsszenarien, Testautomatisierung usw. In diesen Szenarien können Sie nur den TTD-Befehlszeilenrekorder über eine URL installieren. Weitere Informationen finden Sie unter Time Travel Debugging – TTD.exe Befehlszeilenprogramm.

Vergleich der Debugtools

In dieser Tabelle sind die Vor- und Nachteile der verschiedenen verfügbaren Debuglösungen zusammengefasst.

Vorgehensweise Vorteile Nachteile
Live-Debuggen Interaktive Erfahrung, sieht fluss der Ausführung, kann den Zielzustand ändern, vertrautes Tool in der vertrauten Einstellung. Stört die Benutzererfahrung, kann anstrengungen erforderlich sein, das Problem wiederholt zu reproduzieren, kann sich auf die Sicherheit auswirken, nicht immer eine Option für Produktionssysteme. Wenn die Wiederverwendung schwierig ist, von einem Fehlerpunkt zurückzuarbeiten, um die Ursache zu ermitteln.
Dumps Keine Codierung im Voraus, low-intrusiveness, basierend auf Triggern. Aufeinanderfolgende Momentaufnahmen oder Liveabbilder bieten eine einfache Ansicht "im Laufe der Zeit". Der Overhead ist im Wesentlichen null, wenn er nicht verwendet wird.
Telemetrie und Protokolle Leicht, häufig an Geschäftsszenarien / Benutzeraktionen gebunden, machine Learning freundlich. Probleme treten in unerwarteten Codepfaden auf (ohne Telemetrie). Fehlende Datentiefe, statisch kompiliert in den Code.
Time Travel Debugging (Zeitreise-Debugging, TTD) Großartig bei komplexen Fehlern, ohne Codierung vorab, offline wiederholbares Debuggen, Analyse freundlich, erfasst alles. Großer Aufwand zur Datensatzzeit. Kann mehr Daten sammeln, die benötigt werden. Datendateien können groß werden.

Videoschulung

Weitere Informationen zu TTD finden Sie in diesen Videos.

Defrag Tools 185 - Ivette und JamesP gehen über die Grundlagen von TTD und Demo einige Features in WinDbg

Defrag Tools 186 - Jordi und JCAB Demo mehr großartige Features von TTD in WinDbg

CppCon (YouTube) - Jordi, Ken und JamesM präsentiert TTD in WinDbg bei CppCon 2017

Grundlagen der Ablaufverfolgungsdatei

Größe der Ablaufverfolgungsdatei

Die Ablaufverfolgungsdatei kann groß werden. Sie müssen sicherstellen, dass genügend freier Speicherplatz verfügbar ist. Wenn Sie ein Programm für ein paar Minuten aufzeichnen, können die Ablaufverfolgungsdateien schnell auf mehrere Gigabyte wachsen. TTD legt keine maximale Größe für Ablaufverfolgungsdateien fest, damit komplexe Szenarien mit langer Laufzeit möglich sind. Beim schnellen Reproduzieren des Problems bleibt die Größe der Ablaufverfolgungsdatei so klein wie möglich.

Ablaufverfolgungs- und Indexdateien

Eine Ablaufverfolgungsdatei (.run) speichert die Codeausführung während der Aufzeichnung.

Wenn Sie die Aufzeichnung beenden, erstellt das System eine Indexdatei (.idx), um den Zugriff auf die Ablaufverfolgungsinformationen zu optimieren. WinDbg erstellt beim Öffnen von Ablaufverfolgungsdateien auch automatisch Indexdateien.

Indexdateien können groß sein, gewöhnlich doppelt so groß wie die Protokolldatei.

Sie können die Indexdatei mithilfe des !tt.index Befehls aus der Ablaufverfolgungsdatei neu erstellen.

0:000> !tt.index
Successfully created the index in 10ms.

Aufzeichnungsfehler und andere Aufzeichnungsausgabe werden in eine WinDbg-Protokolldatei geschrieben.

Sie speichern alle Ausgabedateien an einem von Ihnen konfigurierten Speicherort. Der Standardspeicherort befindet sich im Dokumentordner des Benutzers. Beispielsweise werden die TTD-Dateien für User1 hier gespeichert:

C:\Users\User1\Documents

Weitere Informationen zum Arbeiten mit Ablaufverfolgungsdateien finden Sie unter Time Travel Debugging – Arbeiten mit Ablaufverfolgungsdateien.

Dinge, die Sie suchen sollten

Vireninkompatibilitäten

Möglicherweise treten Inkompatibilitäten auf, weil TTD in Prozesse eingreift, um diese aufzuzeichnen. In der Regel treten Probleme mit Antivirensoftware oder anderer Systemsoftware auf, die versucht, Systemspeicheraufrufe nachzuverfolgen und zu emulieren. Wenn Probleme mit der Aufzeichnung auftreten, z. B. eine unzureichende Berechtigungsmeldung, versuchen Sie, alle Antivirensoftware vorübergehend zu deaktivieren.

Andere Dienstprogramme, die versuchen, den Speicherzugriff zu blockieren, können ebenfalls problematisch sein. Beispielsweise das Microsoft Enhanced Mitigation Experience Toolkit.

Ein weiteres Beispiel für eine Umgebung, die mit TTD in Konflikt steht, ist das Electron-Anwendungsframework. In diesem Fall könnte die Ablaufverfolgung aufgezeichnet werden, es ist jedoch auch möglich, dass ein Deadlock eintritt oder der aufzuzeichnende Prozess abstürzt.

Nur Benutzermodus

TTD unterstützt derzeit nur den Benutzermodusvorgang, sodass Sie keinen Kernelmodusprozess nachverfolgen können.

Schreibgeschützte Wiedergabe

Sie können in der Zeit zurückreisen, aber Sie können den Verlauf nicht ändern. Sie können Lesespeicherbefehle verwenden, sie können jedoch keine Befehle verwenden, die den Speicher ändern oder in den Arbeitsspeicher schreiben.

Systemgeschützte Prozesse

Einige windows-systemgeschützte Prozesse, wie z. B. protected Process Light (PPL)-Prozess, sind geschützt. TTD kann sich nicht in den geschützten Prozess einfügen, um die Aufzeichnung der Codeausführung zu ermöglichen.

Auswirkungen der Aufzeichnung auf die Leistung

Das Aufzeichnen einer Anwendung oder eines Prozesses wirkt sich auf die Leistung des PCs aus. Der tatsächliche Leistungsaufwand variiert je nach Umfang und Typ des Codes, der während der Aufzeichnung ausgeführt wird. Sie können in typischen Aufzeichnungsszenarien einen 10x-20x-Leistungstreffer erwarten. Manchmal gibt es keine spürbare Verlangsamung in der Benutzeroberfläche. Für die ressourcenintensiveren Vorgänge, z. B. das Dialogfeld "Datei öffnen", sehen Sie jedoch die Auswirkungen der Aufzeichnung.

Ablaufverfolgung von Dateifehlern

Es können Fehler in der Ablaufverfolgungsdatei auftreten. Weitere Informationen finden Sie unter Time Travel Debugging – Problembehandlung.

Erweiterte Features des Time Travel Debugging

Zeitpläne

Zeitleisten sind eine visuelle Darstellung der Ereignisse, die während der Ausführung stattfinden. Bei diesen Ereignissen kann es sich um Haltepunkte, Lese- und Schreibvorgänge im Speicher, Funktionsaufrufe und -rückgaben sowie Ausnahmen handeln. Weitere Informationen zu Zeitachsen finden Sie unter WinDbg – Zeitachsen.

Unterstützung des Debuggerdatenmodells

  • Integrierte Datenmodellunterstützung – TTD umfasst Datenmodellunterstützung. Die Verwendung von LINQ-Abfragen zum Analysieren von Anwendungsfehlern kann ein leistungsfähiges Tool sein. Sie können das Datenmodellfenster in WinDbg verwenden, um mit einer erweiterbaren und durchsuchbaren Version von dx und dx -gzu arbeiten, mit der Sie Tabellen mithilfe von NatVis-, JavaScript- und LINQ-Abfragen erstellen können.

Allgemeine Informationen zum Debuggerdatenmodell finden Sie unter WinDbg – Datenmodell. Informationen zum Arbeiten mit dem TTD-Debuggerobjektmodell finden Sie unter Time Travel Debugging – Einführung in Time Travel Debugging-Objekte.

Skriptunterstützung

Allgemeine Informationen zum Arbeiten mit JavaScript und NatVis finden Sie unter WinDbg – Scripting.

TTD.exe Befehlszeilenprogramm

Das Befehlszeilenprogramm TTD.exe zum Aufzeichnen von Ablaufverfolgungen ist verfügbar. Weitere Informationen finden Sie unter Time Travel Debugging – TTD.exe Befehlszeilenprogramm.

TtD-Unterstützung für verwalteten Code

Sie können die SOS-Debugerweiterung (sos.dll) verwenden, die im 64-Bit-Modus ausgeführt wird, um verwalteten Code mithilfe von TTD in WinDbg zu debuggen. Weitere Informationen finden Sie unter Debuggen von verwaltetem Code mithilfe des Windows-Debuggers.

Erste Schritte mit TTD

Beginnen Sie hier

Wenn Sie noch nicht mit TTD arbeiten, folgen Sie diesem Lernpfad:

  1. Aufzeichnen einer Ablaufverfolgung – Erfassen der ersten Ausführungsablaufverfolgung
  2. Wiedergeben einer Ablaufverfolgung – Navigieren und Analysieren Ihrer Aufzeichnung
  3. Beispiel für eine exemplarische Vorgehensweise für eine App – Schrittweises Debuggen

Benötigen Sie Hilfe?

Erweiterte Funktionen