偵錯環境
有六個可用的偵錯環境:
- WinDbg
- WinDbg (傳統)
- 核心除錯程式 (KD)
- NTKD
- 主控台除錯程式 (CDB)
- NT 符號調試程式 (NTSD)
下列各節說明偵錯環境。
WinDbg
WinDbg 是最新版的 WinDbg,具有新式視覺效果、更快速的視窗,以及完整的腳本體驗,是使用可延伸調試程序數據模型前端和中心建置的。 WinDbg 使用與 WinDbg 相同的基礎引擎(傳統版),因此您用來處理的所有命令、延伸模組和工作流程仍會像以前一樣運作。
如需詳細資訊,請參閱 WinDbg 功能
WinDbg (傳統)
Microsoft Windows 調試程式 WinDbg (傳統) 是 Windows 型調試程式,能夠同時進行使用者模式和內核模式偵錯。 WinDbg 提供 Windows 核心、內核模式驅動程式和系統服務的偵錯,以及使用者模式應用程式和驅動程式。
WinDbg 會使用 Visual Studio 偵錯符號格式進行來源層級偵錯。 它可以從具有 PDB 符號檔的模組存取任何符號或變數,並可存取使用 COFF 符號檔編譯的模組所公開的任何公用函式名稱(例如 Windows .dbg 檔案)。
WinDbg 可以檢視原始碼、設定斷點、檢視變數(包括 C++ 物件)、堆疊追蹤和記憶體。 其 [調試程式命令] 視窗可讓使用者發出各種不同的命令。
針對內核模式偵錯,WinDbg 通常需要兩部計算機(主計算機和目標計算機)。 WinDbg 也支援使用者模式和內核模式目標的各種遠端偵錯選項。
WinDbg 是CDB/NTSD和 KD/NTKD 的圖形化介面對應專案。
Kd
Microsoft Kernel Debugger (KD) 是字元型控制台程式,可在所有 NT 型作業系統上深入分析內核模式活動。 您可以使用 KD 來偵錯內核模式元件和驅動程式,或監視作業系統本身的行為。 KD 也支援多處理器偵錯。
一般而言,KD 不會在偵錯的計算機上執行。 您需要兩部計算機( 主計算機 和 目標計算機),才能進行內核模式偵錯。
NTKD
KD 調試程式有名為NTKD的變化。 它與 KD 一樣,不同之處在於它會在啟動時繁衍新的文字視窗,而 KD 會繼承叫用它的命令提示字元視窗。
CDB
Microsoft 控制台調試程式 (CDB) 是以字元為基礎的控制台程式,可對 Windows 使用者模式記憶體和建構進行低階分析。 名稱 主控台調試程式 是用來指出CDB分類為主控台應用程式的事實;它並不表示目標應用程式必須是控制台應用程式。 事實上,CDB 完全能夠偵錯控制台應用程式和圖形化 Windows 程式。
CDB 對於偵錯目前正在執行或最近當機的程式非常強大(即時分析),但設定簡單。 它可用來調查工作應用程式的行為。 如果應用程式失敗,CDB 可用來取得堆疊追蹤,或查看有罪的參數。 它可在網路之間運作良好(使用遠端訪問伺服器),因為它是以字元為基礎的。
透過CDB,您可以顯示和執行程式代碼、設定斷點,以及檢查和變更記憶體中的值。 CDB 可以藉由反組譯並顯示元件指示來分析二進位程序代碼。 它也可以直接分析原始程式碼。
因為CDB可以透過位址或全域符號存取記憶體位置,所以您可以依名稱而非位址來參考資料和指示,讓您輕鬆地尋找和偵錯特定區段的程式代碼。 CDB 支援偵錯多個線程和進程。 它是可延伸的,而且可以讀取和寫入分頁和非分頁記憶體。
如果目標應用程式本身是主控台應用程式,目標會與CDB共用主控台視窗。 若要繁衍目標主控台應用程式的個別控制台視窗,請使用 -2 命令行選項。
NTSD
CDB 調試程式有名為 Microsoft NT 符號調試程式 (NTSD) 的變化。 這與CDB一樣,不同之處在於啟動CDB時會繁衍新的文字視窗,而CDB會繼承叫用它的命令提示字元視窗。
由於 start 命令也可以用來繁衍新的控制台視窗,因此下列兩個建構會提供相同的結果:
start cdb parameters
ntsd parameters
您可以從 NTSD (或 CDB) 重新導向輸入和輸出,以便從核心調試程式控制它(Visual Studio、WinDbg 或 KD)。 如果這項技術與 NTSD 搭配使用,則完全不會顯示任何控制台視窗。 因此,從核心調試程式控制 NTSD 特別有用,因為它會產生極其羽量型的調試程式,幾乎不會負擔包含目標應用程式的電腦上。 這個組合可用來偵錯系統進程、關機,以及啟動的後續階段。 如需詳細資訊,請參閱 從核心調試程式控制使用者模式調試程式 。