非vasive 偵錯 (使用者模式)

如果使用者模式應用程式已在執行中,偵錯工具就可以 以非vavasive 方式進行偵錯。 使用非vasive 偵錯時,您沒有太多偵錯動作。 不過,您可以將偵錯工具與目標應用程式的干擾降到最低。 如果目標應用程式已停止回應,非vasive 偵錯就很有用。

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

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

選取要偵錯的進程

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

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

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

如需啟動和停止非vasive 偵錯會話的相關資訊,請參閱下列主題:

CDB 命令列

若要從 CDB 命令列對執行中的進程進行非實際偵錯,請在下列語法中指定 -pv 選項、-p 選項和進程識別碼。

cdb -pv -pProcessID

或者,若要藉由指定進程名稱,以非實際方式偵錯執行中的進程,請改用下列語法。

cdb -pv -pnProcessName

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

WinDbg 命令列

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

windbg -pv -pProcessID

或者,若要藉由指定進程名稱,以非實際方式偵錯執行中的進程,請改用下列語法。

windbg -pv -pnProcessName

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

WinDbg 功能表

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

當 [附加至進程] 對話方塊出現時,請選取 [非vasive] 核取方塊。 然後,選取包含所需進程識別碼和名稱的行。 (您也可以在 [進程識別碼] 方塊中輸入進程識別碼。) 最後,按一下 [確定]。

偵錯工具命令視窗

如果偵錯工具已在使用中,您可以在 [偵錯工具命令] 視窗中,使用.attach -v (附加至進程) 命令,以非實際方式偵錯執行中的進程。

如果偵錯工具已經對一或多個進程進行偵錯,您可以使用 .attach 命令。 如果 CDB 處於休眠狀態,但無法在休眠 WinDbg 中使用此命令。

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

開始偵錯會話

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