프로그램에 연결
적절한 포트에 프로그램을 등록한 후에는 디버그할 프로그램에 디버거를 연결해야 합니다.
연결 방법 선택
SDM(세션 디버그 관리자)이 디버그 중인 프로그램에 연결하려고 시도하는 세 가지 방법이 있습니다.
디버그 엔진이 LaunchSuspended 메서드를 통해 실행하는 프로그램의 경우(예: 해석된 언어의 일반적인 경우) SDM은 연결 중인 프로그램과 관련된 IDebugProgramNode2 개체에서 IDebugProgramNodeAttach2 인터페이스를 가져옵니다. SDM이
IDebugProgramNodeAttach2
인터페이스를 가져올 수 있으면 SDM은 OnAttach 메서드를 호출합니다. 프로그램에 연결되지 않았으며 프로그램에 연결하려고 다른 시도를 할 수 있음을 나타내기 위해IDebugProgramNodeAttach2::OnAttach
메서드가S_OK
를 반환합니다.SDM이 연결 중인 프로그램에서 IDebugProgramEx2 인터페이스를 가져올 수 있는 경우 SDM은 Attach 메서드를 호출합니다. 이 방식은 포트 공급자가 원격으로 시작한 프로그램에 일반적입니다.
IDebugProgramNodeAttach2::OnAttach
또는IDebugProgramEx2::Attach
메서드를 통해 프로그램을 연결할 수 없는 경우 SDM은CoCreateInstance
함수를 호출하여 디버그 엔진(아직 로드되지 않은 경우)을 로드한 다음, Attach 메서드를 호출합니다. 이 방법은 포트 공급자가 로컬로 시작하는 프로그램에 일반적입니다.사용자 지정 포트 공급자가
IDebugProgramEx2::Attach
메서드의 사용자 지정 포트 공급자 구현에서IDebugEngine2::Attach
메서드를 호출하는 것도 가능합니다. 일반적으로 이 경우 사용자 지정 포트 공급자는 원격 머신에서 디버그 엔진을 시작합니다.SDM(세션 디버그 관리자)이 Attach 메서드를 호출하면 연결이 수행됩니다.
디버그할 애플리케이션과 동일한 프로세스에서 DE를 실행하는 경우 IDebugProgramNode2의 다음 메서드를 구현해야 합니다.
-
IDebugEngine2::Attach
메서드가 호출되면IDebugEngine2::Attach
메서드 구현에서 다음 단계를 수행합니다.
IDebugEngineCreateEvent2 이벤트 개체를 SDM에 보냅니다. 자세한 내용은 이벤트 보내기를 참조하세요.
IDebugEngine2::Attach
메서드에 전달된 IDebugProgram2 개체에서 GetProgramId 메서드를 호출합니다.프로그램을 식별하는 데 사용되는
GUID
를 반환합니다.GUID
는 DE에 대한 로컬 프로그램을 나타내는 개체에 저장되어야 하며IDebugProgram2
인터페이스에서IDebugProgram2::GetProgramId
메서드가 호출될 때 반환되어야 합니다.참고 항목
IDebugProgramNodeAttach2
인터페이스를 구현하면 프로그램의GUID
가IDebugProgramNodeAttach2::OnAttach
메서드로 전달됩니다. 이GUID
는IDebugProgram2::GetProgramId
메서드에서 반환된 프로그램의GUID
에 사용됩니다.SDM에게 프로그램을 나타내기 위해 로컬
IDebugProgram2
개체가 만들어졌음을 알리기 위한 IDebugProgramCreateEvent2 이벤트 개체를 DE에 보냅니다. 자세한 내용은 이벤트 보내기를 참조하세요.참고 항목
IDebugEngine2::Attach
메서드에 전달된IDebugProgram2
개체와 동일한 개체가 아닙니다. 이전에 전달된IDebugProgram2
개체는 포트에서만 인식되며 별도의 개체입니다.