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