非侵入性偵錯 (使用者模式)

如果使用者模式應用程式已在執行中,調試程式可以非侵入性地進行偵錯。 使用非侵入式偵錯,您沒有那麼多的偵錯動作。 不過,您可以將調試程式對目標應用程式的干擾降到最低。 如果目標應用程式已停止回應,則非侵入性偵錯很有用。

在非侵入式偵錯中,調試程序實際上不會附加至目標應用程式。 調試程式會暫停所有目標線程,並具有目標記憶體、緩存器和其他這類資訊的存取權。 不過,調試程式無法控制目標,因此 g (Go)命令無法運作。

如果您嘗試在非侵入式偵錯期間執行不允許的命令,您會收到錯誤訊息,指出「調試程式未附加,因此無法監視進程執行」。

選取要偵錯的進程

您可以依行程識別碼 (PID) 或行程名稱來指定目標應用程式。

如果您依名稱指定應用程式,則應該使用程式的完整名稱,包括擴展名。 如果兩個進程具有相同的名稱,您必須改用進程標識碼。

如需如何判斷進程標識碼和進程名稱的詳細資訊,請參閱 尋找進程標識碼

如需啟動和停止非侵入性偵錯會話的相關信息,請參閱下列主題:

CDB 命令行

若要從CDB命令行對執行中的進程進行非侵入性偵錯,請在下列語法中指定 -pv 選項、-p 選項和進程標識元。

cdb -pv -p ProcessID

或者,若要指定進程名稱,以非侵入性地偵錯執行中的進程,請改用下列語法。

cdb -pv -pn ProcessName

還有數個其他實用的命令行選項。 如需命令行語法的詳細資訊,請參閱CDB命令行選項

WinDbg 命令行

若要從 WinDbg 命令行對執行中的進程進行非侵入性偵錯,請在下列語法中指定 -pv 選項、-p 選項和進程標識碼。

windbg -pv -p ProcessID

或者,若要指定進程名稱,以非侵入性地偵錯執行中的進程,請改用下列語法。

windbg -pv -pn ProcessName

還有數個其他實用的命令行選項。 如需命令行語法的詳細資訊,請參閱 WinDbg 命令行選項

WinDbg 功能表

當 WinDbg 處於休眠模式時,您可以單擊 [檔案] 功能表上的 [附加至行程] 或按 F6,以非侵入方式偵錯執行中的進程。

當 [附加至進程] 對話框出現時,請選取 [非侵入性] 複選框。 然後,選取包含您想要之進程標識碼和名稱的行。 (您也可以在 [行程識別符] 方塊中輸入進程識別碼。最後,按兩下 [確定]。

調試程式命令視窗

如果調試程式已經作用中,您可以在 [調試程式命令] 視窗中,使用 .attach -v (附加至進程)命令,以非侵入方式偵錯執行中的進程。

如果調試程式已經以侵入性方式偵錯一或多個進程,您可以使用 .attach 命令。 如果 CDB 處於休眠狀態,但無法在休眠的 WinDbg 中使用此命令。

如果 .attach -v 命令成功,調試程式會在下次調試程式發出執行命令時偵錯指定的進程。 由於在非侵入式偵錯期間不允許執行,調試程式一次無法對多個進程進行非侵入性偵錯。 這項限制也表示使用 .attach -v 命令可能會使現有的侵入式偵錯會話變得不太有用。

開始偵錯會話

如需如何開始偵錯會話的詳細資訊,請參閱 調試程序作業