附加至的程式
您已使用適當的連接埠來登錄您的程式後,您必須將偵錯工具附加至您要偵錯的程式。
選擇如何附加
有三種方法,此工作階段偵錯管理員 (SDM) 嘗試附加至正在偵錯的程式。
程式會啟動偵錯引擎,透過IDebugEngineLaunch2::LaunchSuspended (解譯的語言,例如典型) 的方法,SDM 會取得IDebugProgramNodeAttach2介面從IDebugProgramNode2要附加至該程式相關聯的物件。 如果可以取得 SDM IDebugProgramNodeAttach2介面,然後呼叫 SDM IDebugProgramNodeAttach2::OnAttach方法。 IDebugProgramNodeAttach2::OnAttach方法傳回S_OK以指出沒有未附加到程式,且可以附加至程式進行其他嘗試。
如果可以取得 SDM IDebugProgramEx2與要附加至 SDM 呼叫該程式的介面IDebugProgramEx2::Attach方法。 這種方法是一般由連接埠提供者從遠端啟動的程式。
如果程式無法連接到IDebugProgramNodeAttach2::OnAttach或IDebugProgramEx2::Attach方法,SDM 就會將這個偵錯引擎 (如果尚未載入) 載入藉由呼叫CoCreateInstance函式,然後呼叫IDebugEngine2::Attach方法。 這種方法是在本機啟動連接埠提供者的程式。
您也可呼叫自訂的通訊埠供應商的IDebugEngine2::Attach中的自訂通訊埠供應商的實作方法IDebugProgramEx2::Attach方法。 通常這種情況下,自訂的連接埠提供者會啟動遠端機器上的偵錯引擎。
工作階段偵錯管理員 (SDM) 呼叫方法附件是IDebugEngine2::Attach方法。
如果您要偵錯時,應用程式相同的處理序中執行您 DE,那麼您就必須實作下列的方法IDebugProgramNode2:
後IDebugEngine2::Attach呼叫方法時,請遵循下列步驟的實作中IDebugEngine2::Attach方法:
傳送IDebugEngineCreateEvent2 SDM 事件物件。 如需詳細資訊,請參閱 事件傳送。
呼叫IDebugProgram2::GetProgramId上的方法IDebugProgram2物件傳遞至IDebugEngine2::Attach方法。
這會傳回GUID ,用來識別程式。 GUID必須儲存在該物件代表 DE,程式在本機,而且它必須傳回何時IDebugProgram2::GetProgramId上呼叫方法IDebugProgram2介面。
注意事項
如果您決定使用IDebugProgramNodeAttach2介面,該程式的GUID傳遞至IDebugProgramNodeAttach2::OnAttach方法。這GUID用於程式的GUID所傳回的IDebugProgram2::GetProgramId方法。
傳送IDebugProgramCreateEvent2事件的物件,以通知 SDM 的局部IDebugProgram2 DE 代表程式建立物件。 如需詳細資訊,請參閱 事件傳送。
注意事項
這並不相同IDebugProgram2物件傳遞至IDebugEngine2::Attach方法。先前傳遞IDebugProgram2物件的連接埠只辨認出來,而且是不同的物件。
請參閱
參考
IDebugEngineLaunch2::LaunchSuspended
IDebugProgramNodeAttach2::OnAttach