Freigeben über


Versionshinweise zum Time Travel Debugging

Zeitreise-Debugging-Logo mit einer Uhr.

Dieses Thema enthält Informationen zu den Neuerungen im Time Travel Debugging.

1.11.429

Dieses TTD-Update enthält einige Fehlerkorrekturen sowie einige interne Änderungen zur Verbesserung der Zuverlässigkeit.

Hinweis: 1.11.410 führte eine Regression in der Emulation der Intel/AMD LODSD-Anweisung ein. Dieser Fehler wird in der nächsten Version korrigiert sein.

Fehlerbehebungen:

  • Verbessern der Zuverlässigkeit des Lesens von Paketen und andere Änderungen zur Optimierung der Zuverlässigkeit.
  • Korrektur einer Regression bei der Emulation der AVX VBROADCAST[I/F]128-Anweisung.
  • Korrektur des Zugriffs von Ausnahmedatensätzen auf ARM64 in neueren Builds von Windows.

1.11.410

Verbesserte Barrierefreiheit: Die Benutzeroberfläche „Status“ skaliert nun wie vorgesehen mit den Änderungen der Textgröße.

Der @$cursession.TTD.Calls()-Befehl im Debugger unterstützt jetzt Platzhalter, die einer großen Anzahl von Funktionen entsprechen. Es ist jetzt möglich, eine große Anzahl von Funktionen (@$cursession.TTD.Calls("kernel32!*")) abzufragen.

Automatisierung: Eine neue -onMonitorReadyEvent Befehlszeilenoption gibt an, wann der Aufzeichnungsbildschirm (-monitor-Schalter) bereit ist, neue Prozesse aufzuzeichnen.

Fehlerbehebungen:

  • Festlegen einiger Racebedingungen während der Initialisierung des Rekorders.
  • Festlegen, wie Systemaufrufe aufgezeichnet werden, damit Haltepunkte ordnungsgemäß funktionieren.
  • Beheben mehrerer Probleme mit dem Modul „Selektives Aufzeichnen“.

Beheben von Problemen mit ARM64:

  • Es wurde ein Problem behoben, durch das die TTD-Aufzeichnung auf einfachen CPUs auf ARM64v8.0-Ebene verhindert wurde.
  • Verbesserte Nachrichtenübermittlung beim Versuch, auf ARM64 eine Ablaufverfolgung eines x86- oder x64-Prozesses zu verwenden.

Beheben von Problemen mit AMD/Intel (einschließlich einiger von Google gemeldeter Probleme):

  • Es wurde ein Problem behoben, das dazu geführt hat, dass der Detaillierungsgrad (Level of Detail, LOD) nicht richtig emuliert wurde: Statt die nicht verwendeten Bits in RAX auf Null zu setzen, werden sie jetzt korrekt beibehalten.
  • Es wurde ein Problem mit der Emulation der „pop ax“-Anweisung in x86-/x64-Prozesse behoben; es hat dazu geführt, dass die oberen Bits des vollständigen Registers nicht richtig auf Null gesetzt wurden („pop ax“ hat beispielsweise die oberen Bits in RAX gelöscht).
  • Direkte Emulation der XGETBV-Anweisung (schneller).
  • Direkte Emulation aller AVX512 SIMD-Verschiebungen (schneller).

1.11.316

Beheben einer Regression, die gelegentlich Abstürze verursachte, wenn Programme mit langen unterbrechungsfreien datenintensiven Anweisungssequenzen aufgezeichnet wurden.

Beheben von Problemen mit ARM64:

  • Die Aufzeichnung in ARM64-Prozessen mit aktivierter PAC-Funktion wird nun unterstützt.
  • Es wurde ein Problem mit ANDS- und TST-Anweisungen behoben, die die Carry- und Overflow-Flags nicht gelöscht haben.

Behebung von AMD-/Intel-Fehlern:

  • Es wurde ein Problem behoben, das dazu geführt hat, dass TTD „xchg r8,rax"“und „xchg r8w,ax“ nicht richtig als NOP emuliert hat.

1.11.304

TTD implementiert und veröffentlicht nun öffentlich eine API, um den Recorder aus dem live aufgezeichneten Prozess zu steuern. Eine Dokumentation und ein Beispiel finden Sie in GitHub.

TTD kann sich jetzt mit dem neuen -recordMode Schalter selbst einfügen, wenn die Aufzeichnung deaktiviert ist. Standardmäßig verwendet TTD -recordMode Automatic wodurch alle Threads aufgezeichnet werden. Wenn -recordMode Manual angegeben wird, fügt TTD in den Zielprozess ein, zeichnet jedoch nichts auf, bis dies über einen API-Aufruf erfolgt.

Die Aufzeichnung kann nun auf einen bestimmten Satz von Modulen mit dem -module Schalter beschränkt werden. In einigen Szenarien kann dies zu erheblich schnelleren Aufzeichnungen und kleineren Ablaufverfolgungsdateien führen. Es können mehrere -module Schalter angegeben werden.

Übereinstimmende Datensatz- und Wiedergabekomponenten sind jetzt in der Verteilung enthalten. Im Falle einer Inkompatibilität zwischen dem Debugger und dem Befehlszeilenrekorder oder einem Wiedergabefehler können die Wiedergabekomponenten als Problemumgehung in die Debugger-Installation kopiert werden, bis ein neuer Debugger veröffentlicht wird.

Den Speicherort der installierten Datei finden Sie in Powershell, indem Sie wie folgt vorgehen:

ls (Get-AppxPackage | where Name -eq 'Microsoft.TimeTravelDebugging').InstallLocation

Hinzugefügt

  • Schalter „-recordmode“ hinzufügen, um die Injektion ohne automatische Aufzeichnung zu ermöglichen (1.11.296)
  • Add-Module-Schalter und Verwendung zum Erstellen einer SR-Konfiguration (1.11.291)
  • Benutzerdefinierte Project-Daten, die von der In-Process-API für das Datenmodell aufgezeichnet werden (1.11.286)
  • Fügen Sie eine neue TTDLiveRecorder.dll hinzu und verbinden Sie sie zusammen mit TTDRecordCPU.dll (1.11.283)
  • Hinzufügen von Wiedergabekomponenten zu MSIX & Fix SDK-Nachschlagevorgang (1.11.265)

Geändert

keine

Fest

  • Umgehen eines Fehlers im nlohmann JSON Serializer, der in einigen internen Tools verwendet wird (1.11.281)
  • Anpassen der Zeichenfolgenausrichtung, um einen seltenen CRT-Fehler zu vermeiden (1.11.279)
    • Gemeldet und behoben in den VS- und Betriebssystem-Codebasen.
  • Mehrere kleine Fixes aus Watson-Absturzberichten (1.11.276)
  • Beheben einer Regression, die in einigen Fällen zu Beschädigungen der Ablaufverfolgungsdatei führen kann (1.11.264)

Bekannte Probleme

  • Auf ARM64 kann der Compiler eine Reihe von Hochfrequenzfunktionen nicht aufrufen, was in extremen Fällen dazu führen kann, dass der Recorder nicht mehr stapelspeichern kann und abstürzt.

1.11.261

Wichtige Änderungen in dieser Version umfassen:

  • ARM64] Das Verhalten der Anweisungen SXTL, SQXTN2, SQXTUN2, UQXTN2, XTN2 und TRN1 wurde behoben, wenn das Zielregister als Quelle verwendet wird.
  • [ARM64] Es wurde ein Problem behoben, durch das der Debugger SIMD-Register mit ihren niedrigeren 64 Bits anzeigte, die in den hohen 64 Bits dupliziert wurden.
  • [AMD64] AVX512-Emulationskorrekturen für AMD Zen4-Prozessoren (Register wurden beschädigt).

Geändert

  • Implementieren Sie ein neues Versionsverwaltungssystem speziell für den Emulator. (1.11.260)

Fest

  • Beheben Sie fehlerhafte ARM64-Anweisungen, bei denen das Zielregister auch als Quelle verwendet wird. (1.11.261)
  • Beheben Sie die Zen4-Problemumgehung für direkte Rückgaben an den Emulator. (1.11.222)

1.11.202

Diese Version behebt eine Reihe von Problemen, die beim Aufzeichnen von Diensten oder beim Überwachen des Prozessstarts über den Schalter -monitor aufgetreten sind. Außerdem wird die ARM32-Aufzeichnungsunterstützung aus dem Produkt entfernt.

Geändert

  • Verringern Sie die Binäre Größe, indem Sie TTD-Komponenten als DLL mit UCRT verknüpfen. (1.11.191)

Fest

  • Beheben der Aufzeichnung von Diensten. (1.11.193)
  • Beheben Sie mehrere Probleme bei der Verwendung von -monitor. (1.11.189)
  • Korrigieren Sie den Stapelframe der Funktion, die bei der Ausführung von Fallbacks auf x64 nicht veränderlich bleibt (1.11.188)
  • Erneutes Aktivieren des Ausgabepuffers für TTD (1.11.187)
  • Beheben der Behandlung des GPO-Handles im ProcessMonitorServer (1.11.179)

Entfernt

  • Entfernen von ARM32-Aufzeichnungscode aus dem Repository (1.11.198)

1.11.173

Diese Version erhöht die Sichtbarkeit bestimmter Fehlermeldungen, indem sie aus der OUT-Datei extrahiert und in die Konsole gedruckt werden. Außerdem wird ein seltener Absturz während der Ablaufverfolgungswiedergabe behoben.

Geändert

  • Extrahieren und Drucken von Fehlermeldungen aus der OUT-Datei (1.11.173)

Fest

  • Beheben Sie den Dateikonflikt beim Lesen von .out-Dateien aus einem separaten Prozess. (1.11.171)
  • Behebung eines seltenen Absturzes während der Trace-Wiedergabe. (1.11.166)

1.11.163

Diese Version bietet Unterstützung für die Aufzeichnung von x86-Prozessen auf x64-Computern.

Geändert

  • Beheben der x86-Aufzeichnung mit x64 TTD-Installation (1.11.163)

Fest

  • EULA cleanup (1.11.161)

1.11.159

Diese Version ist die erste öffentliche Version des Befehlszeilenrekorders. Zusammen mit mehreren Änderungen, die erforderlich sind, um die öffentliche Veröffentlichung des Befehlszeilenrekorders zu ermöglichen, enthält diese Version auch eine Reihe von Fehlerbehebungen, einschließlich einiger Fixes für den CPU-Emulator.

Der neue Schalter -timestampFileName ermöglicht die Zeitstempelbasierte .run-Dateigenerierung. Dies ist nützlich, wenn Sie viele Instanzen desselben Prozesses aufzeichnen und die Startzeit der Aufzeichnung minimieren möchten.

Geändert

  • Wählen Sie den Standardeinfügungsmodus zur Laufzeit basierend auf dem verwendeten Tracer (1.11.156) aus.
  • Option zum Aktivieren der zeitstempelbasierten .run-Dateigenerierung hinzufügen (1.11.155)
  • Hinzufügen von EULA und -accepteula TTD (1.11.154)
  • Hinzufügen von ProcLaunchMon.sys zu MSIX (1.11.153)
  • Erstellen sie pro Bogen MSIX und MSIXBUNDLE (1.11.152)
  • Beheben Sie eine Reihe von Problemen, die beim Testen von TTD mit Clang entstanden sind. (1.11.146)
  • Clang-Fixes für TTDAnalyze (1.11.144)

Fest

  • Feedback zu appinstaller / public release (1.11.159) überprüfen
  • RC-Feedback (1.11.157)
  • Vermeiden Sie den Papierkorb des Zero-Registers, indem Sie RegisterInfo initialisieren, um auf "Sink" zu verweisen. (1.11.149)
  • Beheben Sie die TST-Anweisung mit sofortiger Und verbessern Sie den Komponententest, um ihn und vieles mehr abzudecken. (1.11.148)
  • Konsolidieren der Entscheidung über geschützte Prozesse und Deaktivieren der Verwendung geschützter Prozesse (1.11.147)

1.11.138

Geändert

  • Erstellen von Recorder MSIX (1.11.138)
  • Beheben Sie alle Probleme, damit Clang TTD erstellen kann. (1.11.137)
  • Einführen von -monitor X als Methode zum Aufzeichnen eines Prozesses beim Start (1.11.116)

Fest

  • Beheben der ARM64-Emulation "CMP ZR" (1.11.128)
  • Beheben der AVX512-Emulation auf AMD Zen4-Prozessoren (1.11.127)
  • Beheben Sie den Mechanismus, mit dem TTD Dateien für eine bestimmte CPU (1.11.121) finden.
  • X86 TTD-Regression beheben (TTDRecordCPU.dll nicht geladen werden kann) (1.11.110)
  • Beheben sie die Rückkehr zum systemeigenen Pfad auf ARM64, um nicht den Papierkorb X28 (1.11.109) zu beheben.

Weitere Informationen

Time Travel Debugging – Übersicht

Time Travel Debugging – Befehlszeilenaufzeichnung