Freigeben über


Zeitreise-Debugging – Arbeiten mit Ablaufverfolgungsdateien

Zeitreise-Debugging-Logo mit einer Uhr.

In diesem Abschnitt wird beschrieben, wie Sie mit Dateien arbeiten, die durch das Debugging von Zeitreisen erstellt und verbraucht werden.

Übersicht über Ablaufverfolgungsdateien

Beim Debuggen von Zeitreisen werden die folgenden Dateien zum Debuggen der Codeausführung verwendet.

  • Die Ablaufverfolgungsdatei enthält die Aufzeichnung der Codeausführung und hat die Erweiterung .RUN.

  • Die Indexdatei ermöglicht einen schnellen Zugriff auf Informationen in der Ablaufverfolgungsdatei und hat die Erweiterung .IDX.

  • Aufzeichnungsfehler und andere Aufzeichnungsausgaben werden in die Debugger-Protokolldatei geschrieben.

.RUN-Ablaufverfolgungsdateien

.RUN-Ablaufverfolgungsdateien können nach der Aufzeichnung mit File>Start debugging>Open trace file geöffnet werden.

Screenshot der Optionen zum Öffnen von Dateien, wobei die Option „Open trace file“ (Ablaufverfolgungsdatei öffnen) hervorgehoben ist.

Alle Ausgabedateien der Ablaufverfolgung werden standardmäßig im Dokumentordner des Benutzers gespeichert. Zum Beispiel würden die TTD-Dateien für Benutzer1 hier gespeichert werden:

C:\Users\User1\Documents

Sie können den Speicherort der Ablaufverfolgungsdateien ändern, wenn Sie mit der Aufzeichnung beginnen. Weitere Informationen finden Sie unter Zeitreise-Debugging – Aufzeichnung.

Die Liste der zuletzt verwendeten Dateien ermöglicht Ihnen einen schnellen Zugriff auf zuvor verwendete Zielkonfigurationsdateien. Alle kürzlich verwendeten Ablaufverfolgungsdateien oder Dump-Dateien werden ebenfalls aufgelistet.

Screenshot der Liste der geöffneten Dateien, die fünf kürzlich verwendete .run-Ablaufverfolgungsdateien anzeigt.

.IDX-Indexdateien

Eine .IDX-Indexdatei wird für die zugehörige .RUN-Ablaufverfolgungsdatei automatisch erstellt, wenn die Ablaufverfolgungsdatei in WinDbg geöffnet wird. Sie können die Indexdatei manuell erstellen, indem Sie den Befehl !index verwenden. Ein Index ermöglicht einen schnelleren Zugriff auf die Informationen zur Ablaufverfolgung.

IDX-Dateien können auch sehr groß sein, in der Regel doppelt so groß wie die .RUN-Datei.

Die IDX-Datei neu erstellen

Sie können die .IDX-Datei mit dem Befehl !index aus der .RUN-Datei neu erstellen. Weitere Informationen finden Sie unter Zeitreise-Debugging – !index (time travel).

0:0:001> !index
Indexed 3/3 keyframes
Successfully created the index in 49ms.

Gemeinsame Nutzung von .RUN-Dateien für die TTD-Ablaufverfolgung

TTD ist nur lokal und funktioniert nicht remote mit einem anderen Computer verbunden.

TTD-Ablaufverfolgungsdateien können an andere weitergegeben werden, indem die .RUN-Datei kopiert wird. Dies kann praktisch sein, wenn Sie einen Mitarbeiter bitten, Ihnen bei der Lösung des Problems zu helfen. Sie müssen die abstürzende Anwendung nicht installieren oder andere damit verbundene Einstellungen vornehmen, um das Problem zu reproduzieren. Sie können einfach die Ablaufverfolgungsdatei laden und die Anwendung debuggen, als ob sie auf ihrem PC installiert wäre.

Der Computer, auf dem Sie die TTD-Ablaufverfolgung wiedergeben, muss alle Befehle unterstützen, die auf dem Aufzeichnungscomputer verwendet wurden – zum Beispiel AVX-Befehle.

Sie können die Datei umbenennen und zusätzliche Informationen wie das Datum oder eine Fehlernummer hinzufügen.

Das. IDX-Datei muss nicht kopiert werden, da sie mithilfe des !index-Befehls wie oben beschrieben neu erstellt werden kann.

Tipp

Wenn Sie mit anderen zusammenarbeiten, geben Sie alle relevanten Ablaufverfolgungspositionen in Bezug auf das vorliegende Problem weiter. Der Mitarbeiter kann den Befehl !tt x:y verwenden, um genau zu diesem Zeitpunkt in der Ausführung des Codes zu gelangen. Zeitliche Positionsbereiche können in Fehlerbeschreibungen aufgenommen werden, um zu verfolgen, wo das mögliche Problem auftritt.

Fehler – Protokolldatei

Aufzeichnungsfehler und andere Aufzeichnungsausgaben werden in die Debugger-Protokolldatei geschrieben. Um die Protokolldatei anzuzeigen, wählen Sie View>Logs aus.

Dieses Beispiel zeigt den Text des Fehlerprotokolls, wenn versucht wird, eine ausführbare Datei namens Foo.exe zu starten und aufzuzeichnen, die sich nicht im Verzeichnis C:\Windows befindet.

2017-09-21:17:18:10:320 : Information : DbgXUI.dll : TTD: Output: 
Microsoft (R) TTD 1.01.02
Release: 10.0.16366.1000
Copyright (C) Microsoft Corporation. All rights reserved.
Launching C:\Windows\Foo.exe
2017-09-21:17:18:10:320 : Error : DbgXUI.dll : TTD: Errors: 
Error: Trace of C:\Windows\Foo.exe PID:0 did not complete successfully: status:27
Error: Could not open 'Foo.exe'; file not found.
Error: Corrupted trace dumped to C:\Users\User1\Documents\Foo01.run.err.

Größe der Ablaufverfolgungsdatei

TTD-Ablaufverfolgungsdateien können sehr groß werden, und es ist wichtig, dass Sie genügend freien Speicherplatz zur Verfügung haben. Wenn Sie eine Anwendung oder einen Prozess auch nur für ein paar Minuten aufzeichnen, kann die Ablaufverfolgungsdatei mehrere Gigabyte groß werden. Die Größe der Ablaufverfolgungsdatei hängt von einer Reihe von Faktoren ab, die im Folgenden beschrieben werden.

TTD legt keine maximale Größe von Ablaufverfolgungsdateien fest, um komplexe Szenarien mit langer Ausführung zu ermöglichen. Durch eine schnelle Neuerstellung des Problems wird die Größe der Ablaufverfolgungsdatei so klein wie möglich gehalten.

Faktoren für die Größe der Ablaufverfolgungsdatei

Es ist nicht möglich, eine genaue Schätzung der Größe der Ablaufverfolgungsdatei abzugeben, aber es gibt ein paar Faustregeln, die Ihnen helfen, die Größe der TTD-Dateien zu verstehen.

Die folgenden Faktoren können die Größe der Ablaufverfolgungsdatei beeinflussen:

  • Die Anzahl der Codeanweisungen, die bei der Aufzeichnung der laufenden Anwendung oder des Prozesses über alle Threads hinweg ausgeführt werden
  • Die Dauer der Aufzeichnung der Anwendung oder des Prozesses (nur, da dies die Anzahl der aufgezeichneten Codeanweisungen beeinflusst)
  • Die Größe der von der Anwendung oder dem Prozess verwendeten Speicherdaten

Die Anzahl der ausgeführten und aufgezeichneten Anweisungen ist der größte Faktor, der die Größe der Ablaufverfolgungsdatei beeinflusst. Eine Ablaufverfolgung benötigt in der Regel zwischen 1 Bit und 1 Byte pro ausgeführtem Befehl. Eine Ablaufverfolgung liegt wahrscheinlich am unteren Ende dieses Bereichs, wenn das aufgezeichnete Programm eine geringere Anzahl verschiedener Funktionen ausführt und mit einer geringeren Menge an Daten arbeitet. Eine Ablaufverfolgung wird wahrscheinlich am oberen Ende dieses Bereichs liegen, wenn das aufgezeichnete Programm eine größere Anzahl verschiedener Funktionen ausführt oder mit einer größeren Menge an Daten arbeitet.

Faustregel für die Größe von Ablaufverfolgungsdateien

Die Ablaufverfolgungsdatei wächst bei der Aufzeichnung einer aktiven App oder eines prozesses etwa 50 MB auf 50 MB pro Sekunde, abhängig von den oben angegebenen Faktoren der Ablaufverfolgungsdatei.

Die Ablaufverfolgungsdatei wird nicht vergrößert, wenn die aufgezeichnete App oder der Prozess im Leerlauf ist (z. B. beim Warten auf Eingabe).

Derzeit gibt es keine maximale Dateigröße für Ablaufverfolgungsdateien. WinDbg kann Ablaufverfolgungsdateien mit einer Größe von mehreren hundert Gigabyte wiedergeben.

Größe der Indexdatei

Die Indexdatei wird von WinDbg automatisch erstellt, wenn Sie eine Ablaufverfolgung zum ersten Mal öffnen. Sie enthält Informationen, die dem Debugger helfen, die Ablaufverfolgung wiederzugeben und Informationen über den Speicher effizienter abzufragen. Seine Größe beträgt im Allgemeinen das 1- bis 2-fache der Größe der Ablaufverfolgungsdatei. Die Faktoren, die sich auf die Größe der Datei auswirken, sind ähnlich wie die Faktoren, die sich auf die Größe der Ablaufverfolgungsdatei auswirken.

Erstens skaliert die Größe der Indexdatei relativ zur Länge der Ablaufverfolgung. Eine Ablaufverfolgung, die eine größere Anzahl von aufgezeichneten Anweisungen enthält, hat im Allgemeinen einen größeren Index.

Zweitens skaliert die Größe des Indexes im Verhältnis zur Breite der Speicherzugriffe. Wenn das aufgezeichnete Programm häufig auf eine große Anzahl verschiedener Speicherplätze zugreift, wird der Index im Allgemeinen größer sein, als wenn das aufgezeichnete Programm auf weniger verschiedene Speicherplätze zugreift oder wenn der Zugriff auf Speicherplätze weniger häufig erfolgt.

Da diese Faktoren den Faktoren ähneln, die sich auf die Größe der Ablaufverfolgungsdatei auswirken, skaliert die Größe der Indexdatei im Allgemeinen relativ zur Größe der Indexdatei (daher unsere Schätzung, dass sie typischerweise zwischen dem 1- und 2-fachen der Größe der Ablaufverfolgungsdatei liegt).

Was ist, wenn ich keinen Speicherplatz mehr habe?

Sowohl die TTD-Ablaufverfolgungs- als auch die Indexdateien werden auf die Festplatte geschrieben. Derzeit gibt es weder für die Ablaufverfolgungs- noch für die Indexdatei eine maximale Dateigrößenbeschränkung. Die Ablaufverfolgungsdatei wird immer größer, bis Sie die Aufzeichnung stoppen oder der verfügbare Speicherplatz überschritten wird.

Während der Aufnahme: TTD schreibt die letzte Seite in die Ablaufverfolgungsdatei und wartet dann so lange, bis es wieder schreiben kann. WinDbg zeigt weiterhin das Aufzeichnungsdialogfeld an, zeigt aber keine Fehlermeldung/Warnmeldung an, wenn während der Aufzeichnung nicht genügend Speicherplatz vorhanden ist.

Wenn während der Aufzeichnung der Speicherplatz knapp wird, entsteht eine Ablaufverfolgungsdatei mit einer unvollständigen Aufzeichnung der Code-Ausführung. Die unvollständige Ablaufverfolgungsdatei kann in WinDbg geöffnet werden, aber sie enthält möglicherweise nicht das eigentliche Problem, wenn der Fehler auftritt, nachdem beim Schreiben der Ablaufverfolgungsdatei kein Speicherplatz mehr vorhanden ist.

Problemumgehung: Öffnen Sie Explorer, und überprüfen Sie, ob der speicherplatzfreie Speicherplatz nahe Null ist. Beobachten Sie alternativ die Ablaufverfolgungsdatei (.RUN) im Datei-Explorer (standardmäßig im Ordner „Documents“), und wenn sie nicht regelmäßig größer wird, wartet möglicherweise die Aufzeichnung. Wählen Sie in WinDbg die Schaltfläche Anhalten und Debuggen aus, geben Sie Speicherplatz frei oder speichern Sie auf einem anderen Datenträger, und starten Sie die Aufzeichnung erneut.

Während der Indizierung: Der Debugger kann eine ungültige Indexdatei erzeugen, was zu unvorhersehbarem Verhalten im Debugger führt, oder der Debugger-Engine-Host kann abstürzen.

Umgehung: Schließen Sie den Debugger, und löschen Sie eine eventuell vorhandene Indexdatei (.idx) für Ihre Ablaufverfolgung. Geben Sie entweder ausreichend Speicherplatz frei, oder verschieben Sie die Ablaufverfolgungsdatei auf eine andere Festplatte mit ausreichend freiem Speicherplatz. Öffnen Sie die Ablaufverfolgung erneut im Debugger und führen Sie !index aus, um einen neuen, korrekten Index zu erstellen. Durch die Indizierung wird die ursprüngliche Ablaufverfolgungsdatei (.run) nicht geändert, sodass keine Daten verloren gegangen sind.

Weitere Informationen

Zeitreise-Debugging – Überblick