使用 KDbgCtrl

KDbgCtrl (內核偵錯控制項,kdbgctrl.exe) 工具可用來控制目的電腦的核心偵錯連線。

若要使用此工具,您的目的電腦必須執行 Windows Server 2003 或更新版本的 Windows。

KDbgCtrl 可以控制五個不同的設定:完整核心偵錯、自動核心偵錯、User-Mode 錯誤處理、封鎖核心偵錯,以及 DbgPrint 緩衝區的大小。

若要使用 KDbgCtrl,您必須先在目的電腦的開機設定中啟用核心偵錯,才能上一次開機。 如果尚未這麼做,則無法使用 KDbgCtrl 來啟用核心偵錯。 如需這些開機設定的詳細資訊,請參閱 開機參數以啟用偵 錯。

完整核心偵錯

啟用 [完整核心偵錯] 時,主機電腦上執行的核心偵錯工具可以中斷至目的電腦。 如果遇到核心模式例外狀況,目的電腦將會中斷至核心偵錯工具。 也允許從目標到主機的訊息,例如 DbgPrint 輸出、符號載入訊息和重新導向的使用者模式偵錯工具。

如果停用此設定,目標將會忽略來自主機電腦的所有訊號。

預設會啟用完整核心偵錯。 若要檢查目前的設定值,請使用 kdbgctrl -c。 若要停用此設定,請使用 kdbgctrl -d。 若要啟用此設定,請使用 kdbgctrl -e

如果您想要檢查目前的設定,並使用它來控制批次檔中的執行,您可以使用 kdbgctrl -cx 命令。 如需此命令的詳細資訊,請參閱 KDbgCtrl Command-Line Options

自動核心偵錯

如果已啟用完整核心偵錯,則 [自動核心偵錯] 的目前設定為不重要,允許所有通訊。

停用完整核心偵錯並啟用自動內核偵錯時,只有目的電腦可以起始偵錯連線。

在此情況下,只有核心模式例外狀況、中斷點或其他核心模式事件會導致建立連線。 不會針對 DbgPrint 輸出、符號載入訊息、重新導向的使用者模式偵錯工具輸入和輸出,或其他類似的訊息建立連線,這些訊息會儲存在 DbgPrint 緩衝區中,而不是傳送至核心偵錯工具。

如果例外狀況或事件導致目標中斷至核心偵錯工具,則會自動開啟完整核心偵錯,就像您執行 kdbgctrl -e一樣。

除非停用完整核心偵錯,否則預設會停用自動核心偵錯 (,但除非停用完整核心偵錯,否則) 。 若要檢查目前的設定值,請使用 kdbgctrl -ca。 若要停用此設定,請使用 kdbgctrl -da。 若要啟用此設定,請使用 kdbgctrl -ea

使用者模式錯誤處理

啟用 User-Mode 錯誤處理時,某些使用者模式事件會導致目的電腦中斷核心偵錯工具。

具體而言,所有 int 3 中斷 -- 例如偵錯工具插入程式碼中的中斷點,或呼叫 DbgBreakPoint -- 會導致核心偵錯工具中斷。 不過,標準例外狀況 -- 例如存取違規和零除 -- 通常不會傳送至核心偵錯工具。

如果使用者模式偵錯工具已經附加至進程,此偵錯工具會擷取所有使用者模式錯誤,而且不會改變核心偵錯工具。 如需各種使用者模式錯誤處理常式的優先順序排名,請參閱 啟用事後偵錯

若要讓 User-Mode 錯誤處理運作,也必須啟用完整核心偵錯或自動內核偵錯。

預設會啟用 User-Mode 錯誤處理。 若要檢查目前的設定值,請使用 kdbgctrl -cu。 若要停用此設定,請使用 kdbgctrl -du。 若要啟用此設定,請使用 kdbgctrl -eu

封鎖核心偵錯

在某些情況下,您可能想要設定目的電腦進行核心偵錯,但請等候啟用核心偵錯,直到目的電腦啟動之後。 您可以封鎖核心偵錯來執行此動作。

重要

使用 BCDEdit 變更開機資訊之前,您可能需要在測試電腦上暫時暫停 Windows 安全性功能,例如 BitLocker 和安全開機。 當測試完成並適當地管理測試電腦時,當安全性功能停用時,請重新啟用這些安全性功能。

若要封鎖核心偵錯,請使用類似下列的命令來設定目的電腦:

bcdedit /debug on
bcdedit /dbgsettings 1394 channel:32 /start DISABLE /noumex

當您重新開機目的電腦時,它會準備好進行核心偵錯,但會停用核心偵錯和 User-Mode 錯誤處理。 此時,主機電腦將無法附加至目的電腦、核心偵錯工具不會攔截錯誤檢查,而且使用者模式例外狀況不會造成核心偵錯工具中斷。

當您準備好時,您可以輸入下列命令,以啟用核心偵錯 (而不重新開機目的電腦) 。

kdbgctrl -db
kdbgctrl -e

稍後,您可以輸入下列命令來停用核心偵錯。

kdbgctrl -d
kdbgctrl -eb

您可以使用 kdbgctrl -cb 來檢查是否封鎖核心偵錯。

DbgPrint 緩衝區大小

DbgPrint 緩衝區會儲存目的電腦已傳送至核心偵錯工具的訊息。

如果已啟用完整核心偵錯,這些訊息會自動出現在核心偵錯工具中。 但是,如果停用此選項,這些訊息將會儲存在緩衝區中。 在稍後的時間點,您可以啟用內核偵錯、連線到核心偵錯工具,並使用 !dbgprint 延伸模組來查看此緩衝區的內容。 如需此緩衝區的詳細資訊,請參閱 DbgPrint 緩衝區。

在免費 Windows 組建上,DbgPrint 緩衝區的預設大小為 4 KB。 若要判斷目前的緩衝區大小,請使用 kdbgctrl -cdb。 若要變更緩衝區大小,請使用 kdbgctrl -sdbSize,其中 Size 會指定新的緩衝區大小。 如需語法詳細資料,請參閱 KDbgCtrl Command-Line Options

範例

若要顯示所有目前的設定,請使用下列命令:

kdbgctrl -c -ca -cu -cb -cdb 

若要還原預設設定,請使用下列命令:

kdbgctrl -e -da -eu -db -sdb 0x1000 

若要鎖定主機電腦,使其只在例外狀況上連絡,請使用下列命令:

kdbgctrl -d -ea -eu 

若要停用所有核心偵錯,請使用下列命令:

kdbgctrl -d -da 

如果您要停用所有核心偵錯,您可能也會想要增加 DbgPrint 緩衝區的大小。 這可確保所有訊息都會儲存,以防您稍後需要看到這些訊息。 如果您有要備援的 MB 記憶體,您可以使用下列命令:

kdbgctrl -sdb 0x100000