共用方式為


連結至程式

使用適當的連接埠註冊程式之後,您必須將偵錯工具連結至您要偵錯的程式。

選擇連結方式

工作階段偵錯管理員 (SDM) 透過三種方式嘗試連結至進行偵錯的程式。

  1. 對於偵錯引擎透過 LaunchSuspended 方法啟動的程式 (例如,一般解譯的語言),SDM 會從已連結程式相關聯的 IDebugProgramNode2 物件取得 IDebugProgramNodeAttach2 介面。 如果 SDM 可以取得 IDebugProgramNodeAttach2 介面,SDM 接著會呼叫 OnAttach 方法。 IDebugProgramNodeAttach2::OnAttach方法會傳回 S_OK,指出它未連結至程式,而且可以嘗試連結至程式。

  2. 如果 SDM 可以從已連結程式取得 IDebugProgramEx2 介面,SDM 會呼叫 Attach 方法。 這種方法通常適用於連接埠提供者從遠端啟動的程式。

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

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

    當工作階段偵錯管理員 (SDM) 呼叫 Attach 方法時,就會達成連結。

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

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

  2. 在傳遞至 IDebugEngine2::Attach 方法的 IDebugProgram2 物件上呼叫 GetProgramId 方法。

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

    注意

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

  3. 傳送 IDebugProgramCreateEvent2 事件物件,通知 SDM 已建立本機IDebugProgram2物件以將程式呈現給 DE。 如需詳細資訊,請參閱傳送事件

    注意

    這與傳遞到 IDebugEngine2::Attach 方法中的 IDebugProgram2 物件不同。 先前傳遞的IDebugProgram2 物件只能由連接埠辨識,而且是不同的物件。