偵錯工具引擎簡介

本檔說明如何使用偵錯工具引擎,以及如何撰寫將在 WinDbg、KD、CDB 和 NTSD 中執行的延伸模組。 在 Microsoft Windows 上執行使用者模式或核心模式偵錯時,可以使用這些偵錯工具延伸模組。

偵錯工具引擎

偵錯工具引擎提供介面,可在 Microsoft Windows 上的使用者模式和核心模式中檢查及操作偵錯目標。

偵錯工具引擎可以取得目標、設定中斷點、監視事件、查詢符號、讀取和寫入記憶體,以及控制目標中的執行緒和進程。

您可以使用偵錯工具引擎來撰寫偵錯工具延伸模組程式庫和獨立應用程式。 這類應用程式是 偵錯工具引擎應用程式。 使用偵錯工具引擎完整功能的偵錯工具引擎應用程式是 偵錯工具。 例如,WinDbg、CDB、NTSD 和 KD 都是偵錯工具;偵錯工具引擎提供其功能的核心。

偵錯工具引擎 API 是由標頭檔 dbgeng.h 中的原型所指定。

不完整的檔

這是初步檔,目前不完整。

For many concepts relating to the debuggers and the debugger engine that are not yet documented here, look in the Debugging Techniques section of this documentation.

若要取得偵錯工具引擎 API 目前未記載的部分功能,請使用 Execute 方法來執行個別偵錯工具命令。

擴展

您可以撰寫和建置擴充 DLL 來建立自己的偵錯命令。 例如,您可能想要撰寫延伸模組命令來顯示覆雜的資料結構。

偵錯工具延伸模組 DLL 有三種不同類型:

  • DbgEng 延伸模組 DLL。 這些是以 dbgeng.h 標頭檔中的原型為基礎。 此類型的每個 DLL 都可以匯出 DbgEng 擴充功能命令。 這些擴充功能命令會使用偵錯工具引擎 API,也可以使用 WdbgExts API。

  • EngExtCpp 擴充 DLL。 這些是以 engextcpp.h 和 dbgeng.h 標頭檔中的原型為基礎。 此類型的每個 DLL 都可以匯出 DbgEng 擴充功能命令。 這些擴充功能命令同時使用偵錯工具引擎 API 和 EngExtCpp 擴充功能架構,也可能會使用 WdbgExts API。

  • WdbgExts 擴充 DLL。 這些是以 wdbgexts.h 標頭檔中的原型為基礎。 此類型的每個 DLL 都會匯出一或多個 WdbgExts 擴充功能命令。 這些擴充功能命令會獨佔使用 WdbgExts API。

DbgEng API 可用來建立延伸模組或獨立應用程式。 WdbgExts API 包含偵錯工具引擎 API 功能的子集,而且只能由擴充功能使用。

所有偵錯工具延伸模組都應該使用 Build 公用程式來編譯和建置。 組建公用程式包含在 Windows 驅動程式套件 (WDK) 中。

如果您執行自訂安裝並選取 SDK 元件及其所有子元件,擴充程式碼範例會安裝為 Windows 套件偵錯工具的一部分。 您可以在適用于 Windows 安裝目錄的偵錯工具的 sdk\samples 子目錄中找到它們。

撰寫新偵錯工具延伸模組最簡單的方式,就是研究範例延伸模組。 每個範例延伸模組都包含 makefile 和來源檔案,以搭配建置公用程式使用。 這兩種類型的延伸模組都會在範例中表示。

撰寫自訂分析偵錯工具延伸模組

您可以藉由撰寫分析延伸模組外掛程式來擴充 !analyze 偵錯工具命令的功能。 藉由提供分析延伸模組外掛程式,您可以參與錯誤檢查或例外狀況的分析,其方式是您自己的元件或應用程式專屬。 當您撰寫分析延伸模組外掛程式時,您也會撰寫中繼資料檔案,描述您想要呼叫外掛程式的情況。 當 !analyze 執行時,它會找出、載入和執行適當的分析延伸模組外掛程式。 如需詳細資訊,請參閱 撰寫自訂分析偵錯工具延伸模組

使用 DML 自訂偵錯工具輸出

您可以使用 DML 自訂偵錯工具輸出。 如需詳細資訊,請參閱 使用 DML 自訂偵錯工具輸出

使用 JavaScript 擴充偵錯工具的功能

使用 JavaScript 建立可瞭解偵錯工具物件的腳本,並擴充和自訂偵錯工具的功能。 JavaScript 提供者會將指令碼語言橋接至偵錯工具的內部物件模型。 JavaScript 偵錯工具腳本提供者允許搭配偵錯工具使用 JavaScript。 如需詳細資訊,請參閱 JavaScript 偵錯工具腳本