세션 디버그 관리자
SDM(세션 디버그 관리자)은 여러 컴퓨터의 여러 프로세스에서 여러 프로그램을 디버깅하는 DE(디버그 엔진) 수를 관리합니다. SDM은 디버그 엔진 멀티플렉서일 뿐만 아니라 디버그 세션의 통합 보기를 IDE에 제공합니다.
세션 디버그 관리자 작업
SDM(세션 디버그 관리자)은 DE를 관리합니다. 한 컴퓨터에서 동시에 실행 중인 디버그 엔진이 둘 이상 있을 수 있습니다. SDM은 DE를 멀티플렉싱하기 위해 DE에서 여러 인터페이스를 래핑하고 단일 인터페이스로 IDE에 표시합니다.
성능을 높이기 위해 일부 인터페이스는 멀티플렉싱되지 않습니다. 대신에 DE에서 직접 사용되며 이러한 인터페이스에 대한 호출은 SDM을 거치지 않습니다. 예를 들어 메모리, 코드 및 문서 컨텍스트와 함께 사용되는 인터페이스는 특정 DE가 디버깅한 특정 프로그램의 특정 명령어, 메모리 또는 문서를 참조하기 때문에 멀티플렉싱되지 않습니다. 다른 DE는 해당 수준의 통신에 관여할 필요가 없습니다.
모든 컨텍스트에 해당되는 것은 아닙니다. 식 평가 컨텍스트 인터페이스에 대한 호출은 SDM을 통과합니다. 식 평가 중에 SDM은 IDE에 제공하는 IDebugExpression2 인터페이스를 래핑합니다. 식이 평가될 때 동일한 스레드에서 실행될 수 있는 동일한 프로세스의 디버깅 프로그램인 여러 DE가 포함될 수 있기 때문입니다.
SDM은 일반적으로 위임 메커니즘으로 작동하지만 브로드캐스트 메커니즘으로 작동할 수도 있습니다. 예를 들어 식 평가 중에 SDM은 지정된 스레드에서 코드를 실행할 수 있음을 모든 DE에게 알리는 브로드캐스트 메커니즘으로 작동합니다. 마찬가지로 SDM은 중지 이벤트를 수신하면 실행을 중지해야 하는 프로그램에 브로드캐스트합니다. 단계가 호출되면 SDM은 계속 실행할 수 있는 프로그램을 브로드캐스트합니다. 중단점은 모든 DE에도 브로드캐스트됩니다.
SDM은 현재 프로그램, 스레드 또는 스택 프레임을 추적하지 않습니다. 프로세스, 프로그램 및 스레드 정보는 특정 디버깅 이벤트와 함께 SDM으로 전송됩니다.