您可以使用 WinDbg 附加至執行中的進程,或繁衍並附加至新進程。
正在運行的程序上連接
有數種方式可讓您使用 WinDbg 附加至執行中的進程。 無論您選擇的方法為何,您都需要進程標識碼或進程名稱。 進程標識碼是由作系統指派的數位。 如需如何判斷行程識別碼和行程名稱的詳細資訊,請參閱 尋找行程識別碼。
WinDbg 功能表
當 WinDbg 處於休眠模式時,您可以從 [檔案] 功能表選擇 [附加至程序],或按下 F6鍵,以附加至正在執行的程序。
在 [附加至處理程序] 對話框中,選擇您要進行偵錯的處理程序,然後選擇 [確定]。
命令提示符
在 [命令提示字元] 視窗中,您可以在啟動 WinDbg 時附加至執行中的進程。 使用下列其中一個指令:
- windbg -p處理程序ID
- windbg -pnProcessName
其中 ProcessID 是執行中進程的進程標識碼,ProcessName 是執行中進程的名稱。
如需命令行語法的詳細資訊,請參閱 WinDbg Command-Line Options。
調試程式命令視窗
如果 WinDbg 已經偵錯一或多個進程,您可以在 [調試程式命令] 視窗中,使用 .attach (附加至進程) 命令,附加至執行 中的進程。
除非部分線程已凍結或暫停,否則調試程式一律會同時啟動多個目標進程。
如果 .attach 命令成功,調試程式會在下次調試程式發出執行命令時附加至指定的進程。 如果您連續多次使用此命令,調試程式必須每次都請求執行。
非侵入性地附加至執行中的進程
如果您要對正在執行的程序進行偵錯,而僅對其執行造成最小干擾,您應該非侵入性地偵錯進程 。
WinDbg 功能表
當 WinDbg 處於休眠模式時,您可以從 [檔案] 功能表或按 F6,選擇 [附加至進程],以非侵入性地偵錯執行中的進程。
當 [附加至進程] 對話框出現時,請選取 [非侵入式] 複選框。 然後,選取包含您想要之進程標識碼和名稱的行。 (您也可以在 [進程識別碼] 方塊中輸入進程識別碼。)最後,您可以選取 [確定]。
命令提示符
在 [命令提示字元] 視窗中,您可以在啟動 WinDbg 時,不具侵入性地附加至執行中的進程。 使用下列其中一個指令:
- windbg -pv -p進程ID
- windbg -pv -pnProcessName
還有數個其他實用的命令行選項。 如需命令行語法的詳細資訊,請參閱 WinDbg Command-Line Options。
調試程式命令視窗
如果除錯程式已經作用中,您可以在 [除錯程式命令] 視窗中,使用 .attach -v (附加至行程) 命令,以非侵入方式偵錯執行 中的行程。
如果調試程式已經以侵入性方式偵錯一或多個進程,您可以使用 .attach 命令。 如果 WinDbg 處於休眠狀態,則無法使用此命令。
如果 .attach -v 命令成功,調試程式會在下次調試程式發出執行命令時偵錯指定的進程。 由於在非侵入式偵錯期間不允許執行,調試程式一次無法對多個進程進行非侵入性偵錯。 這項限制也表示使用 .attach -v 命令可能會使現有的侵入式偵錯會話不太有用。
創建新進程
WinDbg 可以啟動使用者模式應用程式,然後對應用程式進行偵錯。 應用程式是以名稱指定。 調試程式也可以自動附加至子進程(原始目標進程啟動的其他進程)。
調試程式所建立的進程(也稱為繁衍進程)的行為與調試程式未建立的進程稍有不同。
調試程式所建立的進程不使用標準堆積 API,而是使用特殊的偵錯堆積。 您可以使用_NO_DEBUG_HEAP 环境变量 或 -hd 命令行選項,強制繁衍進程使用標準堆積,而不是偵錯堆積。
此外,因為目標應用程式是調試程式的子進程,所以它會繼承調試程序的許可權。 此許可權可能會讓目標應用程式執行無法執行的特定動作。 例如,目標應用程式可能會影響受保護的進程。
WinDbg 功能表
當 WinDbg 處於休眠模式時,您可以從 [檔案] 功能表或按 CTRL+E,選擇 [開啟可執行檔],以繁衍新的進程。
當 [開啟可執行檔] 對話框出現時,請在 [檔名] 方塊中輸入可執行檔的完整路徑,或使用 [[尋找] 清單來選取您想要的路徑和檔名。
如果您想要搭配使用者模式應用程式使用任何命令行參數,請在 [自變數] 方塊中輸入它們。 如果您想從預設目錄變更起始目錄,請在 [開始 目錄] 方塊中輸入目錄路徑。 如果您希望 WinDbg 附加至子進程,請勾選 [同時偵錯子進程] 複選框。
選取項目之後,選取 開啟。
命令提示符
在 [命令提示字元] 視窗中,您可以在啟動 WinDbg 時繁衍新的進程。 使用下列命令:
windbg [-o]ProgramName[Arguments]
-o 選項會導致調試程式附加至子進程。 還有數個其他實用的命令行選項。 如需命令行語法的詳細資訊,請參閱 WinDbg Command-Line Options。
調試程式命令視窗
如果 WinDbg 已經偵錯一或多個進程,您可以在 調試程式命令視窗中,使用 .create (Create Process) 命令來建立新的進程。
除非部分線程已凍結或暫停,否則調試程式一律會同時啟動多個目標進程。
如果 .create 命令成功,調試程式會在下次調試程序發出執行命令時建立指定的進程。 如果您多次連續使用此命令,則需要調試器每次都請求執行。
您可以在 .create之前,使用 .createdir(設置創建過程目錄) 命令來控制應用程式的起始目錄。 您可以使用 .createdir -I 命令或 -noinh 命令行選項來控制目標應用程式是否繼承調試程式的句柄。
您可以使用 .childdbg(偵錯子進程) 命令來啟動或停用子進程的偵錯。
重新附加至進程
如果調試程式停止響應或凍結,您可以將新的調試程式附加至目標進程。 如需如何在這種情況中附加除錯程式的詳細資訊,請參閱 重新附加至目標應用程式。