共用方式為


時間移動偵錯 - 疑難解答

具有時鐘的時間移動偵錯標誌。

本節說明如何針對時間移動追蹤進行疑難解答。

嘗試記錄進程的問題

我收到錯誤訊息,指出「WinDbg 必須提升許可權才能支持時間旅行偵錯」

如訊息所示,執行提升許可權的調試程式是必要條件。 若要提升許可權執行調試程式,請以滑鼠右鍵按兩下 [開始] 功能表中的 [WinDbg ] 圖示,然後選取 [ 更多>以系統管理員身分執行]。

我已使用沒有系統管理員許可權的帳戶安裝 WinDbg,而且收到錯誤訊息,指出「必須提升許可權才能支持時間旅行偵錯」

使用具有系統管理員許可權的帳戶重新安裝 WinDbg,並在調試程式中錄製時使用該帳戶。

我無法啟動和記錄 UWP 應用程式

目前不支援此功能,但您可以附加至並記錄已執行中的 UWP 應用程式。

我無法記錄不尋常的進程類型 - 在另一個會話中執行、安全性內容、認證...

目前,TTD 只會記錄一般進程,您可以從命令主控台啟動,或按兩下 Windows 檔案總管中的可執行檔或快捷方式。

我無法在我的電腦上成功記錄我的應用程式

如果應用程式的錄製失敗,請確認您可以記錄簡單的 Windows 程式。 例如,「ping.exe」或「cmd.exe」是一般可以記錄的簡單程式。

我完全無法在電腦上錄製任何專案

TTD 錄製是一種侵入性技術,可能會干擾其他侵入性技術,例如應用程式虛擬化架構、資訊管理產品、安全性軟體或防毒產品。

如需已知 TTD 不相容的資訊,請參閱時間旅行偵錯 - 概觀中的「要留意的事項」。

我同時追蹤應用程式並執行 AppVerifier,而重新執行追蹤時的效能很慢。

由於 AppVerifier 使用記憶體來檢查應用程式的方式,稍後重新執行追蹤的體驗可能會明顯比沒有 AppVerifier 更糟。 若要改善效能,請在錄製應用程式時停用AppVerifier。 如果無法這樣做,您可能需要關閉 WinDbg 中的 callstack 視窗,以改善效能。

的問題。IDX 索引檔

可以偵錯不含索引檔或損毀或不完整索引檔的追蹤檔案,但不建議這麼做。 需要索引檔案,以確保從偵錯程式讀取的記憶體值最精確,並提升所有其他偵錯作業的效率。

!index -status使用 命令來檢查 的狀態。與相關聯的IDX索引檔。執行追蹤檔案。

如果您嘗試執行 !index -force來重新建立索引檔案。

重新建立 。IDX 索引檔

如果您懷疑索引檔案併發出問題,或 !index -status 指出「已載入索引檔案」以外的任何專案,請重新建立它。 若要這樣做,您可以執行 !index -force。 如果失敗:

  1. 關閉調試程式。
  2. 刪除現有的 IDX 檔案,其名稱會與 相同。執行追蹤檔案,並位於 與 相同的目錄中。RUN 檔案為 。
  3. 開啟追蹤 。在 WinDbg 中執行檔案。 這會執行 !index 命令以重新建立索引。
  4. !index -status使用 命令來確認追蹤索引正常運作。

請確定追蹤檔案所在的相同位置中索引檔案有足夠的空間。 根據錄製的內容,索引檔案可能會明顯大於追蹤檔案,通常是以兩倍大的順序。

追蹤的問題。執行檔案

當追蹤發生問題時。RUN 檔案,您可能會收到錯誤訊息,例如這些訊息。

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

在大部分情況下,所有失敗訊息都表示 。執行追蹤檔案無法使用,而且必須重新記錄。

重新錄製使用者模式應用程式

如果錄製使用者模式應用程式有特定問題,您可能想要嘗試在同一部計算機上錄製不同的應用程式,或在不同的電腦上嘗試相同的應用程式。 您可能想要嘗試記錄應用程式的不同用法,以查看是否有特定問題記錄應用程式的某些部分。

偵錯或建立索引時,我會看到有關「脫軌事件」的訊息。

您可能會看到如下的訊息:

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

TTD 的運作方式是在調試程式內執行模擬器,其會執行偵錯程式的指示,以便在錄製的每個位置複寫該程序的狀態。 當此模擬器觀察到在追蹤檔案中找到的結果狀態與資訊之間出現某種差異時,就會發生脫軌。 例如,上述錯誤是指在追蹤中位置 2A550B:108 的位置找到的位置0x7FFE5EEB4448上找到的指示,該追蹤嘗試讀取位置周圍0x600020的一些記憶體,記錄中不存在。

脫軌通常是由錄製器中的某些錯誤或模擬器中的某些錯誤所造成,在某些錄製的指示中會進一步回到追蹤中。

在大部分情況下,此失敗訊息表示 。針對某些不確定的指令數目,RUN 追蹤檔案會在線程中脫軌,從它脫軌的點開始。 如果您嘗試偵錯的事件未在該間距期間發生,追蹤可能會可供使用。 如果在該間距期間發生感興趣的事件,則必須重新記錄追蹤。

另請參閱

時間移動偵錯 - 概觀

時間移動偵錯版本資訊