会话调试管理器

会话调试管理器 (SDM) 管理着任意数量的调试引擎 (DE),这些调试引擎负责在任意数量的计算机上跨多个进程调试任意数量的程序。 除了作为调试引擎多路复用器之外,SDM 还为 IDE 提供调试会话的统一视图。

会话调试管理器操作

会话调试管理器 (SDM) 管理着 DE。 同一台机器上可以同时运行多个调试引擎。 为了实现 DE 的多路复用,SDM 将多个 DE 的接口进行封装,并将它们作为单一接口提供给 IDE。

为了提高性能,某些接口并未进行多路复用。 相反,这些接口直接从 DE 使用,对这些接口的调用不会经过 SDM。 例如,与内存、代码和文档上下文相关的接口没有进行多路复用,因为它们指向由特定 DE 调试的特定程序中的特定指令、内存或文档。 其他 DE 无需参与该级别的通信。

但并非所有上下文都适用此情况。 对表达式评估上下文接口的调用会经过 SDM。 在表达式计算过程中,SDM 会封装 IDebugExpression2 接口并将其提供给集成开发环境,因为在计算表达式时,可能会涉及多个正在调试同一进程中程序的集成开发环境,而这些程序可能运行在同一线程上。

SDM 通常充当委托机制,但也可能充当广播机制。 例如,在表达式计算过程中,SDM 会充当广播机制,通知所有 DE 可以在指定线程上运行代码。 同样,当 SDM 接收到停止事件时,它会向程序广播,告知它们应该停止运行。 当调用一个步进时,SDM 会向程序广播,告知它们可以继续运行。 断点也会广播给每个 DE。

SDM 不跟踪当前程序、线程或堆栈帧。 进程、程序和线程信息会与特定的调试事件一起发送到 SDM。

另请参阅