共用方式為


開始使用 Windows 偵錯

本文介紹如何在 Windows 環境中開始進行偵錯。 如果您的目標是使用調試程式來分析損毀傾印,請參閱 使用 WinDbg分析損毀傾印檔案。

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

1.安裝 Windows 調試程式

如需安裝 WinDbg 的詳細資訊,請參閱 安裝 WinDbg

2.識別主機和目標系統

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

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

圖表說明主機與目標系統之間的連線並使用雙箭頭表示。

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

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

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

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

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

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

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

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

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

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

4.選擇調試程序環境

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

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

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

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

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

7.設定符號

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

8.設定原始程式碼

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

9.熟悉除錯操作

文件的 調試程式作業 一節說明各種工作的調試程序。 例如,在 WinDbg 中保留記錄檔 說明 WinDbg 如何寫入記錄檔來記錄偵錯會話。

10.熟悉偵錯技術

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

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

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

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

有多個偵錯延伸模組可用來剖析網域特定數據結構。 如需詳細資訊,請參閱 特製化延伸模組載入調試程式擴充功能 DLL 說明如何載入調試程式擴充功能。

本文件假設您有一些核心 Windows 內部知識。 若要深入瞭解 Windows 內部,包括記憶體使用、上下文、執行緒和程序,您可以參考 Pavel Yosifovich、Mark E. Russinovich、David A. Solomon 和 Alex Ionescu 所著的 Windows 內部 等資源。

14.檢閱其他偵錯資源

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

  • 探索 Windows 偵錯:實用的偵錯和追蹤策略 Tarik Soulami 著
  • 進階 Windows 偵錯 by Mario Hewardt 和 Daniel Pravat
  • 磁碟重組工具 影片系列,第 13 到 29 集,全都關於 WinDbg

另請參閱