共用方式為


調試程式程式設計延伸模組 API

本節包含:

調試程式引擎概觀

使用調試程式引擎 API

撰寫 DbgEng 延伸模組

EngExtCpp Extensions

撰寫 WdbgExts 延伸模組

使用 DML 自訂調試程序輸出

使用 JavaScript 擴充調試程式的功能

開發 KDNET 傳輸擴充性模組

本文件說明如何使用調試程式引擎所提供的介面來撰寫將在 WinDbg、KD、CDB 和 NTSD 中執行的擴充功能。 執行使用者模式或內核模式偵錯時,可以使用這些調試程式延伸模組。

調試程序引擎

調試程式引擎提供一個介面,可用來檢查和作使用者模式和內核模式中的偵錯目標。

調試程式引擎可以取得目標、設定斷點、監視事件、查詢符號、讀取和寫入記憶體,以及控制目標中的線程和進程。

您可以使用除錯程式引擎來撰寫除錯程式擴充連結庫和獨立應用程式。 這類應用程式 除錯程式引擎應用程式。 使用除錯程式引擎完整功能的除錯程式引擎應用程式是 除錯程式。 例如,WinDbg、CDB、NTSD 和 KD 是調試程式;調試程式引擎提供其功能的核心。

調試程式引擎 API 是由頭檔 dbgeng.h 中的原型所指定。

如需詳細資訊,請參閱 除錯程式引擎概觀 和使用除錯程式引擎 API

延伸模組

您可以藉由撰寫和建置擴充 DLL 來建立自己的偵錯命令。 例如,您可能想要撰寫擴充功能命令來顯示複雜的數據結構。

除錯程式擴充 DLL 有三種不同類型的調試程式:

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

    如需詳細資訊,請參閱 撰寫 DbgEng 延伸模組

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

  • WdbgExts 擴充 DLL。 這些是以 wdbgexts.h 頭檔中的原型為基礎。 此類型的每個 DLL 都會匯出一或多個 WdbgExts 擴充功能命令。 這些擴充功能命令會獨佔使用 WdbgExts API。 如需詳細資訊,請參閱 撰寫 WdbgExts 延伸模組

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

所有調試程式延伸模組都應該使用 Visual Studio 編譯和建置。

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

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

撰寫自定義分析調試程式延伸模組

您可以撰寫分析延伸模組外掛程式,以擴充 !analyze 調試程式命令的功能。 藉由提供分析延伸模組外掛程式,您可以參與錯誤檢查的分析,或以您自己的元件或應用程式特有的方式參與例外狀況分析。 當您撰寫分析延伸模組外掛程式時,您也會撰寫元數據檔案,描述您想要呼叫外掛程式的情況。 !analyze 執行時,它會找出、載入並執行適當的分析延伸模組外掛程式。 如需詳細資訊,請參閱 撰寫自定義分析調試程式延伸模組

使用 DML 自訂除錯程序輸出

您可以使用 DML 自訂除錯程序輸出。 如需詳細資訊,請參閱 使用 DML 自訂除錯程式輸出

使用 JavaScript 擴充調試程式的功能

使用 JavaScript 建立可瞭解調試程式對象的腳本,並擴充和自定義調試程式的功能。 JavaScript 提供者會將腳本語言橋接至調試程式的內部物件模型。 JavaScript 調試程式腳本提供者,允許搭配調試程式使用 JavaScript。 如需詳細資訊,請參閱 JavaScript 調試程式文稿

開發 KDNET 傳輸擴充性模組

KDNET 傳輸可以透過使用不同的硬體驅動程式擴充性模組 dll,擴充以在任何硬體上執行。 KDNET 傳輸擴充性模組是由網路卡廠商所開發,可為特定網路卡新增核心偵錯支援。

KDNET 是一種核心偵錯傳輸,可讓您透過網路對視窗進行核心偵錯。 其設計目的是讓硬體支援層內建在與網路封包處理和核心介面層不同的模組中。 此硬體驅動程式支援層稱為 KDNET 擴充性模組。 如需詳細資訊,請參閱 開發 KDNET 傳輸擴充性模組