開始使用 Windows 偵錯

本文說明如何開始偵錯 Windows。 如果您的目標是使用調試程式來分析損毀傾印,請參閱 使用 WinDbg 分析損毀傾印檔案。

若要開始使用 Windows 偵錯,請完成下列步驟。

1.識別主機和目標系統

兩個不同的計算機系統通常用於偵錯,因為處理器上的指令執行通常會在進程期間暫停。 調試程式會在 主機 系統上執行,而您想要偵錯的程式代碼會在 目標 系統上執行。

主機 <--------------------------------------------------> 目標

Diagram illustrating the connection between host and target systems with a double arrow.

在某些情況下,可以使用虛擬機作為第二個系統。 例如,虛擬電腦可以在與您需要偵錯的程式代碼相同的計算機上執行。 不過,如果您的程式代碼與低階硬體通訊,使用虛擬計算機可能不是最佳方法。 如需詳細資訊,請參閱 設定虛擬機的網路偵錯 - KDNET

2.判斷調試程式類型:內核模式或使用者模式

接下來,您必須判斷要使用內核模式或使用者模式偵錯。

  • 操作系統和特殊許可權程式會在核心模式執行。 內核模式程式代碼具有存取系統任何部分的許可權,而且不受限制,例如使用者模式程序代碼。 內核模式程式代碼可以存取在使用者模式或核心模式中執行的任何其他進程的任何部分。 大部分的核心OS功能和許多硬體設備驅動器都會以核心模式執行。

  • 計算機上的應用程式和子系統會在使用者模式執行。 在使用者模式中執行的進程會在自己的虛擬位址空間內執行。 它們受限於直接存取系統的許多部分,包括系統硬體、未配置供其使用的記憶體,以及可能會危害系統完整性的系統其他部分。 在使用者模式中執行的進程會有效地與系統與其他使用者模式進程隔離,因此它們不會干擾這些資源。

如果您的目標是偵錯驅動程式,請判斷驅動程式是否為內核模式驅動程式或使用者模式驅動程式。 Windows 驅動程式模型 (WDM) 驅動程式和內核模式驅動程式架構 (KMDF) 都是內核模式驅動程式。 如名稱所示,使用者模式驅動程序架構 (UMDF) 驅動程式是使用者模式驅動程式。

在某些情況下,很難判斷程式代碼執行所在的模式。 在此情況下,您可能需要挑選一個模式,並查看該模式中可用的資訊。 有些問題需要在使用者模式和核心模式中使用調試程式。

根據您偵錯的模式,您可能需要以不同方式設定及使用調試程式。 有些偵錯命令在兩種模式中都運作相同,有些命令的運作方式不同。

深入瞭解在核心模式中使用調試程式:

深入瞭解如何在使用者模式中使用調試程式:

3.選擇調試程序環境

在大部分情況下,WinDbg 調試程序運作良好,但有時候您可能會想要使用另一個調試程式,例如自動化或 Visual Studio 的控制台調試程式。 如需詳細資訊,請參閱 偵錯環境

4.決定如何連線目標與主機

一般而言,目標和主機系統是由乙太網路連線。 如果您正在進行早期啟動工作,或裝置上沒有乙太網路連線,則可以使用其他網路連線選項。 如需詳細資訊,請參閱下列文章:

5.選擇 32 位或 64 位偵錯工具

無論您需要 32 位或 64 位調試程式,取決於您在目標和主機系統上執行的 Windows 版本,以及您要偵錯 32 位或 64 位程式代碼。 如需詳細資訊,請參閱 選擇 32 位或 64 位偵錯工具

6.設定符號

若要使用 WinDbg 提供的所有進階功能,您必須載入適當的符號。 如果您沒有正確設定符號,您會收到訊息,指出當您嘗試使用相依於符號的功能時,無法使用符號。 如需詳細資訊,請參閱 Windows 偵錯的符號。

7.設定原始程式碼

如果您的目標是偵錯您自己的原始程式碼,您必須設定原始碼的路徑。 如需詳細資訊,請參閱 來源路徑

8.熟悉調試程序作業

檔的調試程式作業 區段描述各種工作的調試程序作業。 例如, 載入調試程式延伸模組 DLL 說明如何載入調試程式擴充功能。

9. 熟悉偵錯技術

標準偵錯技術 適用於大部分的偵錯案例,範例包括設定斷點、檢查呼叫堆棧,以及尋找記憶體流失。 特殊偵錯技術 適用於特定技術或程式代碼類型。 範例包括 隨插即用 偵錯、KMDF 偵錯和 RPC 偵錯。

10.使用調試程序參考命令

您可以在除錯程式中使用不同的偵錯命令。 使用調試程式中的 .hh 命令 來顯示任何偵錯命令的實用資訊。 如需可用命令的詳細資訊,請參閱 調試程序參考

11.針對特定技術使用偵錯延伸模組

有多個偵錯延伸模組可用來剖析網域特定數據結構。 如需詳細資訊,請參閱 特製化擴充功能

本文件假設您有一些核心 Windows 內部知識。 若要深入瞭解 Windows 內部,包括記憶體使用量、內容、線程和進程,您可以檢閱 Windows Internals by Pavel Yosifovich、Mark E. Russinovich、David A. 所羅門和 Alex Ionescu 等資源。

13.檢閱其他偵錯資源

其他資源包括下列書籍和影片:

  • Windows 偵錯內部:Tarik Soulami 的實際偵錯和追蹤策略
  • Mario Hewardt 和 Daniel Pravat 的進階 Windows 偵
  • 重組工具 視頻系列, 情節 13 到 29, 所有關於 WinDbg

另請參閱