時間移動偵錯 - 使用追蹤檔案

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

本節說明如何使用經過時間移動偵錯所建立和取用的檔案。

追蹤檔案概觀

時間移動偵錯會使用下列檔案來偵錯程式代碼執行。

  • 追蹤檔案包含程式代碼執行記錄,而且具有 。RUN 擴充功能。

  • 索引檔案可讓您快速存取追蹤檔案中的資訊,並具有 。IDX 擴充功能。

  • 錄製錯誤和其他錄製輸出會寫入調試程序記錄檔。

跟蹤。執行檔案

跟蹤。執行檔案可以使用 [檔案開始]>偵錯 [開啟追蹤檔案] 來記錄>之後加以開啟。

檔案開啟選項的螢幕快照,其中已醒目提示 [開啟追蹤檔案] 選項。

所有追蹤輸出檔案預設都會儲存在users檔案資料夾中。 例如,針對User1,TTD 檔案會儲存在這裡:

C:\Users\User1\Documents

您可以在開始記錄時變更追蹤檔案的位置。 如需詳細資訊,請參閱 時間移動偵錯 - 錄製

最近使用的檔案清單可讓您快速存取先前使用的目標組態檔。 任何最近使用的追蹤檔案或傾印檔案也會列出。

檔案開啟清單的螢幕快照,其中顯示五個最近使用的 .run 追蹤檔案。

指數。IDX 檔案

索引 。系統會為相關聯的追蹤 建立IDX檔案。在 WinDbg 中開啟追蹤檔案時,會自動執行檔案。 您可以使用 !index 命令手動建立索引檔案。 索引可讓您更快速地存取追蹤資訊。

IDX 檔案也可以很大,通常是的大小兩倍。執行檔案。

重新建立 。IDX 檔案

您可以重新建立 。來自的IDX檔案。使用 !index 命令執行檔案。 如需詳細資訊,請參閱 時間旅行偵錯 - !index (時間旅行)

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

共用 TTD 追蹤 。執行檔案

TTD 僅限本機,無法從遠端連線到另一部計算機。

您可以複製 來與其他人共用 TTD 追蹤檔案。執行檔案。 這可以方便讓同事協助您找出問題。 他們不需要安裝當機的應用程式,或執行任何其他相關的安裝程式,以嘗試重現問題。 他們只要載入追蹤檔案並偵錯應用程式,就好像已安裝在其電腦上一樣。

您重新執行 TTD 追蹤的電腦必須支援記錄電腦上所使用的所有指示,例如 AVX 指示。

您可以將檔案重新命名為包含任何其他資訊,例如日期或錯誤號碼。

。IDX 檔案不需要複製,因為它可以使用 !index 命令重新建立,如上所述。

提示

與其他人共同作業時,傳遞與手邊問題相關的任何相關追蹤位置。 共同作業者可以使用 !tt x:y 命令,在程式代碼執行時移至該確切的時間點。 時間位置範圍可以包含在錯誤描述中,以追蹤可能發生問題的位置。

錯誤 - 記錄檔

錄製錯誤和其他錄製輸出會寫入調試程序記錄檔。 若要檢視記錄檔,請選取 [檢視>記錄]。

此範例顯示嘗試啟動並記錄未在 C:\Windows 目錄中Foo.exe名為 的可執行檔時,錯誤記錄檔文字。

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.

追蹤檔案大小

TTD 追蹤檔案可能會變得非常龐大,請務必確保您有足夠的可用磁碟空間。 如果您只記錄應用程式或進程幾分鐘,追蹤檔案的大小可能會成長為數 GB。 追蹤檔案的大小取決於下列許多因素。

TTD 不會設定追蹤檔案的大小上限,以允許複雜的長時間執行案例。 快速重新建立問題,將盡可能縮小追蹤檔案大小。

追蹤檔案大小因素

無法提供追蹤檔案大小的確切估計,但有一些經驗規則可協助您瞭解TTD檔案大小。

下列因素可能會影響追蹤檔案的大小:

  • 錄製執行中的應用程式或進程時,在所有線程上執行的程式代碼指令數目
  • 記錄應用程式或行程的時間長度(僅因為這會影響所記錄的程式代碼指示數目)
  • 應用程式或進程所使用的記憶體資料大小

執行和記錄的指令數目是影響追蹤檔案大小的最大因素。 追蹤通常需要每一個指令執行 1 個字節到 1 個字節。 當記錄的程式執行較少的相異函式,並在較小的數據集上運作時,追蹤可能會接近該範圍的下端。 當記錄的程序執行較多的相異函式或操作較大的數據集時,追蹤可能會接近該範圍的較高端。

追蹤檔案大小規則經驗

記錄使用中的應用程式或進程時,追蹤檔案會根據上面所識別的追蹤檔案大小因素,每秒成長約 5 MB 到 50 MB。

當正在記錄的應用程式或進程閑置時,追蹤檔案將不會成長(例如,等候輸入時)。

目前追蹤檔案沒有檔案大小上限。 WinDbg 可以重新執行大小為數百 GB 的追蹤檔案。

索引檔案大小

當您第一次開啟追蹤時,WinDbg 會自動建立索引檔案。 其中包含的信息可協助調試程式更有效率地重新執行追蹤和查詢有關記憶體的資訊。 其大小通常範圍從追蹤檔案的大小 1 到 2 倍。 影響其大小的因素類似於影響追蹤檔案大小的因素。

首先,索引檔案的大小會相對於追蹤的長度進行調整。 包含較大記錄指令數目的追蹤通常會有較大的索引。

其次,索引的大小會相對於記憶體存取的廣度進行調整。 如果記錄的程式經常存取大量的相異記憶體位置,索引通常會大於記錄的程式存取較少的相異記憶體位置,或存取記憶體位置較不頻繁。

由於這些因素與影響追蹤檔案大小的因素類似,因此索引檔案的大小通常會相對於索引檔案的大小進行調整(因此我們估計通常介於追蹤檔案大小 1 倍到 2 倍之間)。

如果我用完磁碟空間,該怎麼辦?

TTD 追蹤和索引檔都會寫入磁碟。 目前追蹤或索引檔案的檔案大小限制沒有上限。 追蹤檔案會以大小成長,直到您停止錄製或超過可用的磁碟空間量為止。

在錄製期間: TTD 會將最後一頁寫出至追蹤檔案,然後有效地等待,直到可以再次寫入為止。 WinDbg 會繼續顯示 [錄製] 對話方塊,但在錄製期間磁碟空間不足時不會顯示錯誤/警告訊息。

在錄製期間用盡磁碟空間會導致追蹤檔案與程式代碼執行記錄不完整。 您可以在 WinDbg 中開啟不完整的追蹤檔案,但如果在寫入追蹤檔案時發生磁碟空間不足時發生錯誤,它可能不會包含實際問題。

因應措施:開啟 檔案總管,並檢查磁碟 (亦即 C: 磁碟驅動器) 可用空間是否接近零。 或者監看追蹤 (。RUN) 檔案在 檔案總管 (預設在 Documents 資料夾中), 如果不是定期成長的大小, 錄製可能會等待。 選取 WinDbg 中的 [停止] 和 [偵錯] 按鈕、釋出空間或儲存至另一個磁碟,然後重新開始錄製。

在編製索引期間: 調試程式可能會產生無效的索引檔,導致調試程式發生無法預期的行為,或調試程式引擎主機可能會當機。

因應措施:關閉調試程式,並刪除追蹤可能存在的任何索引檔案 (.idx)。 釋放足夠的磁碟空間,或將追蹤檔案移至具有足夠可用空間的不同磁碟。 在調試程式中再次開啟追蹤,然後執行 !index 以建立新的、正確的索引。 索引不會修改原始追蹤檔案 (.run),因此不會遺失任何數據。

另請參閱

時間移動偵錯 - 概觀