使用者模式傾印檔案

在本文中,取得使用者模式傾印檔案的概觀,以及如何使用它們來協助解決 Bug 和當機。

如需分析傾印檔案的相關信息,請參閱 分析使用者模式傾印檔案

使用者模式傾印檔類型

有數種類型的使用者模式損毀傾印檔案可供使用。 不同類型的傾印檔案分成兩個類別:

您可以藉由分析傾印檔案來取得大量的資訊。 不過,任何傾印檔案都無法提供您使用調試程序偵錯當機時取得的資訊量。

完整使用者模式傾印

完整的使用者模式傾印是基本的使用者模式傾印檔案。 完整的使用者模式傾印檔案包括:

  • 進程的整個記憶體空間。
  • 程式的可執行映像。
  • 句柄數據表。
  • 其他資訊,可協助調試程式重建發生傾印時所使用的記憶體。

您可以將完整的使用者模式傾印檔案 壓縮 成迷你傾印。 若要壓縮完整的使用者模式傾印檔案,請先在調試程式中載入傾印檔案。 然後,使用 .dump (Create Dump File) 命令,以迷你傾印格式儲存新的傾印檔案。

儘管其名稱相同,但最大的迷你傾印檔案包含比完整使用者模式傾印檔案更多的資訊。 例如, .dump /mf.dump /ma 命令會建立比 命令更大的完整檔案 .dump /f

在使用者模式中, .dump /m[MiniOptions] 通常是最佳選擇。 您使用此參數建立的傾印檔案可能會因非常小到非常大的大小而有所不同。 藉由指定正確的 MiniOptions 參數,您可以確切控制包含的資訊。

Minidumps

迷你傾印檔案的大小和內容會根據要傾印的程式以及執行傾印和所選選項的應用程式而有所不同。 有時候,小型傾印檔案會相當大,並包含完整記憶體和句柄數據表。 其他時候,迷你傾印檔案會比較小。 例如,迷你傾印檔案可能只包含單一線程的相關信息,或只包含堆疊中所參考模組的相關信息。

迷你傾印一詞會造成誤導,因為最大的迷你傾印檔案包含比完整使用者模式傾印檔案更多的資訊。 例如, .dump /mf.dump /ma 會建立大於 且更完整的檔案 .dump /f。 基於這個理由,建議您使用 .dump /m[MiniOptions] 而不是 .dump /f 建立所有使用者模式傾印檔案。

如果您使用調試程式建立迷你傾印檔案,您可以選擇要包含的資訊。 .dump /m此命令包含組成目標進程、線程資訊和堆疊資訊之已載入模組的基本資訊。 您可以使用下表所述的任何參數選項來修改基本命令:

.dump 選項 對傾印檔案的影響
/ma 建立具有所有選擇性新增功能的迷你傾印。 選項 /ma 相當於 /mfFhut。 它會將完整記憶體數據、處理數據、卸除的模組資訊、基本記憶體資訊和線程時間資訊新增至迷你傾印。
/mf 將完整記憶體數據新增至迷你傾印。 包含目標應用程式擁有的所有可存取認可頁面。
/mF 將所有基本記憶體資訊新增至迷你傾印。 此參數會將數據流新增至包含所有基本記憶體資訊的迷你傾印,而不只是有效記憶體的相關信息。 調試程式會使用資訊,在偵錯迷你傾印時重新建構進程的完整虛擬記憶體配置。
/mh 將與目標應用程式相關聯的句柄相關數據新增至迷你傾印。
/mu 將卸除的模組資訊新增至迷你傾印。 此選項僅適用於 Windows Server 2003 和更新版本的 Windows。
/mt 將更多線程資訊新增至迷你傾印。 線程資訊包括線程時間,當您偵錯迷你傾印時,可以使用 .ttime (顯示線程時間) 顯示。
/mi 將次要記憶體新增至迷你傾印。 次要記憶體 是堆疊或備份儲存區指標所參考的任何記憶體,加上此位址周圍的小型區域。
/mp 將進程環境區塊和線程環境區塊數據新增至迷你傾印。 如果您需要存取有關應用程式進程和線程的 Windows 系統資訊,這項資訊就很有用。
/mw 將所有認可的讀寫私人頁面新增至迷你傾印。
/md 將可執行檔映像內的所有讀寫數據區段新增至迷你傾印。
/mc 在影像中新增程式代碼區段。
/mr 從堆疊的迷你傾印部分刪除,並儲存未用來重新建立堆棧追蹤的記憶體。 也會刪除局部變數和其他數據類型值。 此選項不會讓小型傾印縮小 (未使用的記憶體區段) ,但如果您想要保護其他應用程式的隱私權,這會很有用。
/mR 從迷你傾印中刪除完整的模組路徑。 只會包含模組 名稱 。 如果您想要保護使用者目錄結構的隱私權,此選項非常有用。

您可以結合這些切換選項。 例如,使用 命令 .dump /mfiu 來建立包含已卸除和次要記憶體的中等大型迷你傾印。 使用 命令 .dump /mrR 來建立可移除部分使用者資訊的迷你傾印。 如需完整的語法詳細數據,請參閱 .dump (建立傾印檔案)

用來建立傾印檔案的工具

您可以使用數種不同的工具來建立使用者模式傾印檔案:

  • ProcDump
  • CDB
  • WinDbg

ProcDump

ProcDump 是命令行公用程式,可用來監視應用程式是否有 CPU 尖峰,以及在尖峰期間產生損毀傾印。 系統管理員或開發人員可以使用損毀傾印檔案來判斷尖峰的原因。 ProcDump 也包含監視無回應的視窗 (,方法是使用相同的視窗停止響應定義,讓 Windows 和任務管理員使用) 和未處理的例外狀況。 您可以使用 ProcDump 根據系統效能計數器的值來產生傾印。 ProcDump 也可以做為一般進程傾印公用程式,您可以在其他腳本中內嵌。

如需使用 Sysinternals ProcDump 公用程式建立使用者模式傾印檔案的相關信息,請參閱 ProcDump

CDB 和 WinDbg

控制台調試程式 (CDB) 和 Windows 調試程式 (WinDbg) 是 Windows 軟體開發工具包和 Windows 驅動程式套件中包含的偵錯工具。 請參閱 下載並安裝 WinDbg Windows 調試程式中的安裝選項。

您可以使用 CDB 或 WinDbg,以多種方式建立使用者模式傾印檔案:

  • 自動建立傾印檔案。
  • 偵錯時建立傾印檔案。
  • 壓縮現有的傾印檔案。

如需工具的詳細資訊,請參閱使用CDB搭配 Windows 偵錯和錯 使用者入門。

自動建立傾印檔案

發生應用程式錯誤時,Windows 可能會以數種方式之一回應,視事後偵錯設定而定。 如果這些設定指示偵錯工具建立傾印檔案,則會建立使用者模式記憶體轉儲檔案。 如需詳細資訊,請參閱 啟用事後偵錯

偵錯時建立傾印檔案

當 CDB 或 WinDbg 偵錯使用者模式應用程式時,您也可以使用 .dump (Create Dump File) 命令來建立傾印檔案。

此命令不會造成目標應用程式終止。 藉由選取特定的命令選項,您可以建立包含所需資訊的迷你傾印檔案。

壓縮現有的傾印檔案

您可以使用 CDB 或 WinDbg 壓縮傾印檔案。 若要壓縮傾印檔案,請開始偵錯現有的傾印檔案。 然後,使用 .dump 命令來建立大小較小的傾印檔案。

時間移動偵錯

偵錯使用者模式應用程式的另一個選項是時間移動偵錯 (TTD) 。 TTD 是一種工具,可用來在程式執行時記錄您的進程。 您可以重新執行調試程式會話的錄製,以尋找 Bug。 您可以輕鬆地移至錄製的不同部分,以了解導致 Bug 的條件,以及如何修正問題。

TTD 對於損毀傾印檔案有顯著的優點,這通常遺漏導致失敗的程式代碼執行。 在程式代碼執行中往回移動的能力,在判斷根本原因時可能很有用。

如需詳細資訊,請參閱 時間移動偵錯概觀

下一步