共用方式為


啟動後附加

在啟動程式後,偵錯工作階段已附加偵錯引擎 (DE) 給該程式。

設計決策

因為通訊很容易在共用的位址空間內,您必須決定是否合理多個以利於進行偵錯工作階段之間的 DE 或 DE 與程式之間的通訊。 選擇下列兩者之一:

  • 如果程式能更有意義,以利於進行偵錯工作階段 」 與 「 DE 之間的通訊時,偵錯工作階段就會同時建立 DE 檔案,並詢問 DE 附加至程式中。 這會使偵錯工作階段和 DE 一起一個地址空間,以及執行階段環境和程式一起放在另一個。

  • 如果程式能更有意義,以幫助 DE 與程式之間的通訊時,執行階段環境會同時建立 DE。 這會使一個地址空間中的 SDM DE、 執行階段環境和程式一起放在另一個。 這是典型的實作與執行指令碼的語言直譯器搭配 DE。

    注意事項注意事項

    DE 附加至該程式的方式是實作相依性。DE 與程式之間的通訊也是實作相依性。

實作

以程式設計的方式,當工作階段偵錯管理員 (SDM) 第一次收到IDebugProgram2 ,表示要啟動程式的物件,它會呼叫IDebugProgram2::Attach方法,將它傳遞IDebugEventCallback2物件,也就是稍後用來將偵錯事件傳遞回 SDM。 然後,IDebugProgram2::Attach 方法會呼叫 IDebugProgramNodeAttach2::OnAttach 方法。 如需有關如何接收 SDM IDebugProgram2介面,請參閱通知連接埠

如果您是在相同的位址空間,以進行偵錯,通常是因為 DE 屬於執行指令碼解譯器程式執行時所需IDebugProgramNodeAttach2::OnAttach方法傳回S_FALSE,表示它完成附加的處理程序。

如果相反地,DE 會在位址空間的 SDM, IDebugProgramNodeAttach2::OnAttach方法傳回S_OK或IDebugProgramNodeAttach2介面的實作不完全在IDebugProgramNode2進行偵錯的程式相關聯的物件。 如此一來, IDebugEngine2::Attach最後會呼叫方法來完成附加作業。

在後者的情況下,您必須呼叫IDebugProgram2::GetProgramId上的方法IDebugProgram2物件傳遞至IDebugEngine2::Attach方法、 存放區GUID在本機的程式中的物件,並傳回這GUID時IDebugProgram2::GetProgramId隨後在此物件上呼叫方法。 GUID用來唯一識別各種偵錯元件之間的程式。

請注意,如果是IDebugProgramNodeAttach2::OnAttach方法傳回S_FALSE、 GUID程式所傳遞到該方法,而且很IDebugProgramNodeAttach2::OnAttach ,設定方法GUID上本機程式物件。

DE 現在已連接到程式,且準備好要傳送任何啟動事件。

請參閱

參考

IDebugEventCallback2

IDebugProgram2

IDebugProgram2::Attach

IDebugProgram2::GetProgramId

IDebugProgramNode2

IDebugProgramNodeAttach2

IDebugProgramNodeAttach2::OnAttach

IDebugEngine2::Attach

概念

附加到程式上直接

通知連接埠

偵錯工作