Freigeben über


Debuggen von Zeitreisen – Problembehandlung

Debugging-Logo für Zeitreisen mit einer Uhr.

In diesem Abschnitt wird beschrieben, wie Sie Zeitreiseablaufverfolgungen behandeln.

Probleme beim Aufzeichnen eines Prozesses

Ich erhalte eine Fehlermeldung, die besagt, dass WinDbg mit erhöhten Rechten ausgeführt werden muss, um das Debuggen von Zeitreisen zu unterstützen.

Wie in der Meldung angegeben, ist die Ausführung des Debuggers mit erhöhten Rechten erforderlich. 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 Weitere>Ausführen als Administrator aus.

Ich habe WinDbg mit einem Konto installiert, das keine Administratorberechtigungen hat, und ich erhalte eine Fehlermeldung, die besagt, dass WinDbg mit erhöhten Rechten ausgeführt werden muss, um das Debuggen von Zeitreisen zu unterstützen.

Installieren Sie WinDbg mit einem Konto, das über Administratorrechte verfügt, und verwenden Sie dieses Konto bei der Aufzeichnung im Debugger.

Ich kann eine UWP-Anwendung nicht starten und aufzeichnen.

Dies wird derzeit nicht unterstützt, aber Sie können eine bereits ausgeführte UWP-Anwendung anfügen und aufzeichnen.

Ich kann keinen Einfügenamen eines ungewöhnlichen Prozesstyps aufzeichnen <– ausgeführt in einer anderen Sitzung, Sicherheitskontext, Anmeldeinformationen...>

Derzeit zeichnet TTD nur reguläre Prozesse auf, die normalerweise über eine Befehlskonsole oder durch Klicken auf eine ausführbare Datei oder Verknüpfung in Windows Explorer gestartet werden können.

Ich kann meine Anwendung nicht erfolgreich auf meinem Computer aufzeichnen.

Wenn die Aufzeichnung Ihrer Anwendung fehlschlägt, überprüfen Sie, ob 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 auf meinem Computer überhaupt nichts aufzeichnen.

Die TTD-Aufzeichnung ist eine invasive Technologie, die andere invasive Technologien wie Anwendungsvirtualisierungsframeworks, Informationsverwaltungsprodukte, Sicherheitssoftware oder Antivirenprodukte beeinträchtigen kann.

Informationen zu bekannten TTD-Inkompatibilitäten finden Sie unter "Dinge, auf die Sie achten müssen" in Time Travel Debugging – Übersicht .

Ich ermittele eine Anwendung und beende AppVerifier gleichzeitig, und die Leistung beim Wiedergeben der Ablaufverfolgung ist langsam.

Aufgrund der Art und Weise, wie AppVerifier arbeitsspeicher verwendet, um die Anwendung zu überprüfen, kann die Erfahrung später beim Wiedergeben der Ablaufverfolgung deutlich 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 Aufruflistenfenster 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 wird benötigt, um sicherzustellen, dass aus dem debuggten Prozess gelesene Arbeitsspeicherwerte am genauesten sind, und um die Effizienz aller anderen Debugvorgänge zu erhöhen.

Verwenden Sie den !index -status Befehl, um den Zustand von zu untersuchen. IDX-Indexdatei, die zugeordnet ist. RUN-Ablaufverfolgungsdatei.

Wenn Sie versuchen können, die Indexdatei erneut zu erstellen, indem Sie ausführen !index -force.

Erneutes Erstellen von . IDX-Indexdatei

Wenn Sie die Indexdatei vermuten und mit dieser ausstellen oder !index -status etwas anderes als "Indexdatei geladen" sagt, erstellen Sie sie neu. Hierzu können Sie ausführen !index -force. Wenn dies fehlschlägt:

  1. Schließen Sie den Debugger.
  2. Löschen Sie die vorhandene IDX-Datei. Sie hat denselben Namen wie . Führen Sie die Ablaufverfolgungsdatei aus, und befinden Sie sich im selben Verzeichnis wie der . Die RUN-Datei ist.
  3. Öffnen Sie die Ablaufverfolgung . RUN-Datei in WinDbg. Dadurch wird der !index Befehl ausgeführt, um den Index neu zu erstellen.
  4. 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, in dem sich die Ablaufverfolgungsdatei befindet. Abhängig vom Inhalt der Aufzeichnung kann die Indexdatei erheblich größer als die Ablaufverfolgungsdatei sein, in der Regel in der Reihenfolge von doppelt so groß.

Probleme mit ablaufverfolgung . RUN-Dateien

Wenn Probleme mit der Ablaufverfolgung auftreten. Führen Sie die Datei aus, möglicherweise erhalten Sie 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 weisen alle Fehlermeldungen darauf hin, 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 vorliegt, können Sie versuchen, eine andere App auf demselben PC aufzuzeichnen oder dieselbe App auf einem anderen PC zu testen. Sie können versuchen, eine andere Verwendung der App aufzuzeichnen, um festzustellen, ob ein bestimmtes Problem mit der Aufzeichnung bestimmter Teile der App vorliegt.

Beim Debuggen oder Erstellen des Indexes werden Meldungen zu "Entgleisungsereignissen" angezeigt.

Es ist möglich, dass Meldungen wie die folgende angezeigt werden:

Derailment event MissingDataDerailment(7) on UTID 2, position 2A550B:108 with PC 0x7FFE5EEB4448 Request address: 0x600020, size: 32

TTD führt einen Emulator innerhalb des Debuggers aus, der die Anweisungen des debuggten Prozesses ausführt, um den Status dieses Prozesses an jeder Position in der Aufzeichnung zu replizieren. Entgleisungen treten auf, wenn dieser Emulator eine Abweichung zwischen dem resultierenden Zustand und den informationen in der Ablaufverfolgungsdatei beobachtet. Der oben zitierte Fehler bezieht sich für instance auf eine Anweisung, die 0x7FFE5EEB4448 an Position 2A550B:108 in der Ablaufverfolgung gefunden wurde, die versucht hat, etwas Arbeitsspeicher um den Speicherort 0x600020 zu lesen, der in der Aufzeichnung nicht vorhanden ist.

Entgleisungen werden häufig durch einen Fehler im Recorder oder manchmal im Emulator bei einer aufgezeichneten Anweisung weiter zurück in der Ablaufverfolgung verursacht.

In den meisten Fällen gibt diese Fehlermeldung an, dass . Die RUN-Ablaufverfolgungsdatei weist für eine unbestimmte Anzahl von Anweisungen eine Lücke im Thread auf, die 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.

Weitere Informationen

Debuggen von Zeitreisen – Übersicht