프로그램에 직접 연결
이미 실행 중인 프로세스에서 프로그램을 디버그하려는 사용자는 일반적으로 다음 프로세스를 따릅니다.
IDE에서 디버그 메뉴를 열고 프로세스에 연결... 명령을 선택합니다.
시스템에 설치된 모든 DE(디버그 엔진)가 나열된 프로세스에 연결 대화 상자가 나타납니다.
선택한 프로세스를 디버깅하는 데 사용할 DE를 지정하고 프로세스를 선택한 다음, 연결 버튼을 클릭합니다.
디버그 패키지는 디버그 세션을 시작하고 DE 목록을 디버그 세션에 전달합니다. 디버그 세션은 콜백 함수와 함께 이 목록을 선택한 프로세스에 전달한 다음, 실행 중인 프로그램을 열거하도록 프로세스에 요청합니다.
프로그래밍 방식으로 사용자 요청에 대한 응답으로 디버그 패키지는 SDM(세션 디버그 관리자)을 인스턴스화하고 선택한 DE 목록을 SDM에 전달합니다. 목록과 함께 디버그 패키지는 SDM에 IDebugEventCallback2 인터페이스를 전달합니다. 디버그 패키지는 IDebugProcess2::Attach를 호출하여 DE 목록을 선택한 프로세스에 전달합니다. 그런 다음, SDM은 포트에서 IDebugProcess2::EnumPrograms를 호출하여 프로세스에서 실행 중인 프로그램을 열거합니다.
이 시점부터 각 디버그 엔진은 두 가지 예외를 제외하고 시작 후 연결에 자세히 설명된 대로 프로그램에 연결됩니다.
효율성을 위해 SDM과 주소 공간을 공유하도록 구현된 DE는 그룹화되어 각 DE에 연결할 프로그램 집합이 있습니다. 이 경우 IDebugProcess2는 IDebugEngine2::Attach를 호출하고 연결할 프로그램 배열을 전달합니다.
두 번째 예외는 이미 실행 중인 프로그램에 연결하는 DE에서 보낸 시작 이벤트에 일반적으로 진입점 이벤트가 포함되지 않는다는 것입니다.