Zeitreise-Debugging – Problembehebung
In diesem Abschnitt wird beschrieben, wie Sie Zeitablaufverfolgungen behandeln.
Probleme beim Versuch, einen Prozess aufzuzeichnen
Ich erhalte eine Fehlermeldung, die besagt: "WinDbg muss ausgeführt werden, um Time Travel Debugging zu unterstützen"
Wie die Meldung angibt, ist das Ausführen des Debuggers mit erhöhten Rechten eine Anforderung. Um den Debugger mit erhöhten Rechten auszuführen, klicken Sie im Startmenü mit der rechten Maustaste auf das WinDbg-Symbol, und wählen Sie dann "Als Administrator ausführen">aus.
Ich habe WinDbg mit einem Konto installiert, das nicht über Administratorrechte verfügt, und ich erhalte eine Fehlermeldung, die besagt: "WinDbg muss ausgeführt werden, um Time Travel Debugging zu unterstützen"
Installieren Sie WinDbg mithilfe eines Kontos mit Administratorrechten erneut, und verwenden Sie dieses Konto beim Aufzeichnen im Debugger.
Ich kann keine UWP-Anwendung starten und aufzeichnen
Dies wird derzeit nicht unterstützt, Sie können jedoch eine bereits ausgeführte UWP-Anwendung anfügen und aufzeichnen.
Ich kann keinen ungewöhnlichen Prozesstyp aufzeichnen - wird in einer anderen Sitzung, sicherheitskontext, Anmeldeinformationen ausgeführt...
TtD zeichnet derzeit nur normale Prozesse auf, die normalerweise über eine Befehlskonsole gestartet werden können, oder indem Sie im Windows-Explorer auf eine ausführbare Datei oder Verknüpfung klicken.
Ich kann meine Anwendung nicht erfolgreich auf meinem Computer aufzeichnen
Wenn die Aufzeichnung Ihrer Anwendung fehlschlägt, stellen Sie sicher, dass Sie einen einfachen Windows-Prozess aufzeichnen können. Beispielsweise sind "ping.exe" oder "cmd.exe" einfache Prozesse, die normalerweise aufgezeichnet werden können.
Ich kann überhaupt nichts auf meinem Computer aufzeichnen
TTD-Aufzeichnung ist eine invasive Technologie, die andere invasive Technologien wie Anwendungsvirtualisierungsframeworks, Informationsverwaltungsprodukte, Sicherheitssoftware oder Antivirenprodukte beeinträchtigen kann.
Weitere Informationen zu bekannten TTD-Inkompatibilitäten finden Sie unter "Dinge, auf die sie achten müssen" im Time Travel Debugging – Übersicht .
Ich verfolgt eine Anwendung und führt AppVerifier gleichzeitig aus, und die Leistung bei der Wiedergabe der Ablaufverfolgung ist langsam.
Aufgrund der Art und Weise, wie AppVerifier Speicher verwendet, um die Anwendung zu überprüfen, kann die Erfahrung später, wenn die Ablaufverfolgung wiedergegeben wird, spürbar schlechter sein als ohne AppVerifier. Um die Leistung zu verbessern, deaktivieren Sie AppVerifier beim Aufzeichnen der App. Wenn dies nicht möglich ist, müssen Sie möglicherweise das Callstack-Fenster in WinDbg schließen, um die Leistung zu verbessern.
Probleme mit . IDX-Indexdateien
Das Debuggen einer Ablaufverfolgungsdatei ohne Indexdatei oder mit einer beschädigten oder unvollständigen Indexdatei ist möglich, wird jedoch nicht empfohlen. Die Indexdatei ist erforderlich, um sicherzustellen, dass Speicherwerte, die aus dem debuggierten Prozess gelesen werden, am genauesten sind, und um die Effizienz aller anderen Debugvorgänge zu erhöhen.
Verwenden Sie den !index -status
Befehl, um den Status der . IDX-Indexdatei zugeordnet mit der . RUN-Ablaufverfolgungsdatei.
Wenn Sie versuchen, die Indexdatei erneut zu erstellen, indem Sie diese ausführen !index -force
.
Neuerstellen der . IDX-Indexdatei
Wenn Sie vermuten und probleme mit der Indexdatei haben oder !index -status
etwas anderes als "Indexdatei geladen" sagen, erstellen Sie sie neu.
Dazu können Sie ausführen !index -force
. Wenn dies fehlschlägt:
- Schließen Sie den Debugger.
- Löschen Sie die vorhandene IDX-Datei, sie hat denselben Namen wie die . RUN-Ablaufverfolgungsdatei und befinden sich im selben Verzeichnis wie die . RUN-Datei ist.
- Öffnen Sie die Ablaufverfolgung . RUN-Datei in WinDbg. Dadurch wird der
!index
Befehl ausgeführt, um den Index neu zu erstellen. - Verwenden Sie den
!index -status
Befehl, um zu bestätigen, dass der Ablaufverfolgungsindex funktionsfähig ist.
Stellen Sie sicher, dass genügend Speicherplatz für die Indexdatei am gleichen Speicherort vorhanden ist, an dem sich die Ablaufverfolgungsdatei befindet. Je nach Inhalt der Aufzeichnung kann die Indexdatei erheblich größer als die Ablaufverfolgungsdatei sein, in der Regel in der Reihenfolge doppelt so groß.
Probleme mit Der Ablaufverfolgung . RUN-Dateien
Wenn Probleme mit der Ablaufverfolgung auftreten. RUN-Datei erhalten Möglicherweise Fehlermeldungen wie diese.
Replay and log are out of sync at fallback data. Packet type is incorrect "Packet Type"
Replay and log are out of sync at opaque data. Log had already reached the end
Replay exit thread event does not match up with logged event
Logged debug write values are out of sync with replay
In den meisten Fällen geben alle Fehlermeldungen an, dass die . RUN-Ablaufverfolgungsdatei kann nicht verwendet werden und muss erneut aufgezeichnet werden.
Erneutes Aufzeichnen der Benutzermodus-App
Wenn ein bestimmtes Problem beim Aufzeichnen einer Benutzermodus-App besteht, können Sie versuchen, eine andere App auf demselben PC aufzuzeichnen oder dieselbe App auf einem anderen PC zu testen. Möglicherweise möchten Sie versuchen, eine andere Verwendung der App aufzuzeichnen, um festzustellen, ob ein bestimmtes Problem beim Aufzeichnen bestimmter Teile der App besteht.
Beim Debuggen oder Erstellen des Indexes werden Meldungen zu "Entgleisungsereignisse" angezeigt.
Es ist möglich, dass Nachrichten wie diese angezeigt werden:
Derailment event MissingDataDerailment(7) on UTID 2, position 2A550B:108 with PC 0x7FFE5EEB4448 Request address: 0x600020, size: 32
TTD funktioniert durch Ausführen eines Emulators innerhalb des Debuggers, der die Anweisungen des debuggierten Prozesses ausführt, um den Status dieses Prozesses an jeder Position in der Aufzeichnung zu replizieren. Entgleisungen treten auf, wenn dieser Emulator eine Art Diskrepanz zwischen dem resultierenden Zustand und den Informationen beobachtet, die in der Ablaufverfolgungsdatei gefunden wurden. Der oben zitierte Fehler bezieht sich z. B. auf eine Anweisung, die an position 0x7FFE5EEB4448 an Position 2A550B:108 in der Ablaufverfolgung gefunden wurde, die versucht hat, einen Speicher um die Position 0x600020 zu lesen, die in der Aufzeichnung nicht vorhanden ist.
Entgleisungen werden häufig durch einen Fehler im Recorder oder manchmal im Emulator verursacht, bei einigen aufgezeichneten Anweisungen weiter zurück in der Ablaufverfolgung.
In den meisten Fällen gibt diese Fehlermeldung an, dass die . DIE RUN-Ablaufverfolgungsdatei weist eine Lücke im Thread auf, die ab dem Zeitpunkt, an dem sie entgleist wurde, für eine unbestimmte Anzahl von Anweisungen entgleist wurde. Wenn das Ereignis von Interesse, das Sie debuggen möchten, während dieser Lücke nicht aufgetreten ist, kann die Ablaufverfolgung verwendet werden. Wenn das Ereignis von Interesse während dieser Lücke aufgetreten ist, muss die Ablaufverfolgung erneut aufgezeichnet werden.