共用方式為


附加至程式

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

註冊您的程式與適當的連接埠後,您必須將偵錯工具附加至您要偵錯的程式。

選擇要附加的方式

有三種工作階段偵錯管理員 (SDM) 嘗試附加至正在偵錯的程式。

  1. 透過偵錯引擎所啟動的程式LaunchSuspended方法 (解譯的語言,例如一般),會取得 SDM IDebugProgramNodeAttach2介面從IDebugProgramNode2程式附加至相關聯的物件。 如果可以取得 SDMIDebugProgramNodeAttach2介面,然後呼叫 SDM OnAttach方法。 IDebugProgramNodeAttach2::OnAttach方法會傳回S_OK來表示它沒有未附加至程式和其他嘗試可附加至程式。

  2. 如果可以取得 SDM IDebugProgramEx2介面從要附加到 SDM 呼叫程式附加方法。 這種方法通常由連接埠提供者從遠端所啟動的程式。

  3. 如果無法透過附加程式IDebugProgramNodeAttach2::OnAttachIDebugProgramEx2::Attach方法,在 SDM 載入 (如果尚未載入) 的偵錯引擎藉由呼叫CoCreateInstance函式,然後呼叫附加方法。 這種方法通常由連接埠提供者在本機啟動程式。

    此外,也可以呼叫自訂連接埠供應商IDebugEngine2::Attach中的自訂連接埠供應商的實作方法IDebugProgramEx2::Attach方法。 通常在此情況下,自訂連接埠供應商會啟動遠端電腦上的偵錯引擎。

附件在工作階段偵錯管理員 (SDM) 呼叫時達成附加方法。

如果您要偵錯應用程式相同的程序中執行您 DE,則您必須實作下列方法IDebugProgramNode2:

之後IDebugEngine2::Attach呼叫方法時,請遵循這些步驟的實作中IDebugEngine2::Attach方法︰

  1. 傳送IDebugEngineCreateEvent2 SDM 事件物件。 如需詳細資訊,請參閱傳送事件

  2. 呼叫GetProgramId方法IDebugProgram2物件傳遞給IDebugEngine2::Attach方法。

    這會傳回GUID用來找出的程式。 GUID物件,代表本機程式 DE,而且它必須傳回時,必須儲存IDebugProgram2::GetProgramId上呼叫方法IDebugProgram2介面。

    注意

    如果您實作IDebugProgramNodeAttach2介面,該程式的GUID傳遞至IDebugProgramNodeAttach2::OnAttach方法。 這GUID用於程式GUID傳回IDebugProgram2::GetProgramId方法。

  3. 傳送IDebugProgramCreateEvent2通知 SDM 事件物件的本機IDebugProgram2來代表 DE 程式建立物件。 如需詳細資訊,請參閱傳送事件

    注意

    這不是相同IDebugProgram2物件時,傳遞至IDebugEngine2::Attach方法。 先前傳遞IDebugProgram2物件的連接埠只會辨識,而且是不同的物件。

另請參閱

啟動為基礎的附件
傳送事件
LaunchSuspended
IDebugProgram2
IDebugProgramCreateEvent2
IDebugProgramNodeAttach2
OnAttach
IDebugProgramNode2
GetProgramId
IDebugProgramEx2
附加
附加