附加至程式
如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件。
註冊您的程式與適當的連接埠後,您必須將偵錯工具附加至您要偵錯的程式。
選擇要附加的方式
有三種工作階段偵錯管理員 (SDM) 嘗試附加至正在偵錯的程式。
透過偵錯引擎所啟動的程式LaunchSuspended方法 (解譯的語言,例如一般),會取得 SDM IDebugProgramNodeAttach2介面從IDebugProgramNode2程式附加至相關聯的物件。 如果可以取得 SDM
IDebugProgramNodeAttach2
介面,然後呼叫 SDM OnAttach方法。IDebugProgramNodeAttach2::OnAttach
方法會傳回S_OK
來表示它沒有未附加至程式和其他嘗試可附加至程式。如果可以取得 SDM IDebugProgramEx2介面從要附加到 SDM 呼叫程式附加方法。 這種方法通常由連接埠提供者從遠端所啟動的程式。
如果無法透過附加程式
IDebugProgramNodeAttach2::OnAttach
或IDebugProgramEx2::Attach
方法,在 SDM 載入 (如果尚未載入) 的偵錯引擎藉由呼叫CoCreateInstance
函式,然後呼叫附加方法。 這種方法通常由連接埠提供者在本機啟動程式。此外,也可以呼叫自訂連接埠供應商
IDebugEngine2::Attach
中的自訂連接埠供應商的實作方法IDebugProgramEx2::Attach
方法。 通常在此情況下,自訂連接埠供應商會啟動遠端電腦上的偵錯引擎。
附件在工作階段偵錯管理員 (SDM) 呼叫時達成附加方法。
如果您要偵錯應用程式相同的程序中執行您 DE,則您必須實作下列方法IDebugProgramNode2:
之後IDebugEngine2::Attach
呼叫方法時,請遵循這些步驟的實作中IDebugEngine2::Attach
方法︰
傳送IDebugEngineCreateEvent2 SDM 事件物件。 如需詳細資訊,請參閱傳送事件。
呼叫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
物件的連接埠只會辨識,而且是不同的物件。
另請參閱
啟動為基礎的附件
傳送事件
LaunchSuspended
IDebugProgram2
IDebugProgramCreateEvent2
IDebugProgramNodeAttach2
OnAttach
IDebugProgramNode2
GetProgramId
IDebugProgramEx2
附加
附加