共用方式為


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

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

在非侵入性偵錯中,偵錯工具實際上不會附加至目標應用程式。 偵錯工具會暫停目標的所有執行緒,並可以存取目標的記憶體、暫存器和其他這類資訊。 不過,偵錯工具無法控制目標,因此 g (Go) 等指令無法運作。

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

選取要除錯的處理程序

您可以依處理程序 ID (PID) 或處理程序名稱來指定目標應用程式。

如果您依名稱指定應用程式,則應該使用處理程序的完整名稱,包括副檔名。 如果兩個處理程序具有相同的名稱,您必須改用處理程序 ID。

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

如需啟動和停止非侵入式偵錯工作階段的相關資訊,請參閱下列主題:

CDB 命令列

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

cdb -pv -pProcessID

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

cdb -pv -pnProcessName

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

WinDbg 命令列

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

windbg -pv -p進程ID

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

windbg -pv -pnProcessName

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

WinDbg 功能表

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

當「附加到進程」對話框出現時,勾選「非侵入性」選項。 然後,選取包含您想要之進程標識碼和名稱的行。 (您也可以在「進程 ID」方塊中輸入進程 ID。最後,按一下「確定」。

偵錯工具命令視窗

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

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

如果 .attach -v 命令成功,偵錯工具會在偵錯工具下次發出執行命令時偵錯指定的程式。 由於在非侵入式偵錯期間不允許執行,調試程式一次無法對多個進程進行非侵入性偵錯。 此限制也表示使用 .attach -v 命令可能會降低現有的侵入式偵錯工作階段的用處。

開始偵錯工作階段

如需如何開始偵錯會話的詳細資訊,請參閱 偵錯工具作業