表达式计算器(EE)检查语言的语法,以便在运行时分析和计算变量和表达式,从而允许用户在 IDE 处于中断模式时查看它们。
使用表达式计算器
表达式是使用 ParseText 方法创建的,如下所示:
调试引擎 (DE) 实现 IDebugExpressionContext2 接口。
调试包从
IDebugExpressionContext2接口获取对象,然后对其调用IDebugStackFrame2::ParseText该方法以获取 IDebugExpression2 对象。调试包调用 EvaluateSync 方法或 EvaluateAsync 方法以获取表达式的值。
IDebugExpression2::EvaluateAsync是从命令/即时窗口调用的。 所有其他 UI 组件调用IDebugExpression2::EvaluateSync。表达式计算的结果是一个 IDebugProperty2 对象,该对象包含表达式计算结果的名称、类型和值。
在表达式求值期间,EE 需要从符号提供程序的组件中获取信息。 符号提供程序提供用于标识和理解已分析表达式的符号信息。
异步表达式计算完成后,DE 通过会话调试管理器(SDM)发送异步事件,以通知 IDE 表达式计算已完成。 然后,评估结果将从调用
IDebugExpression2::EvaluateSync方法中返回。
实现说明
Visual Studio 调试引擎希望使用公共语言运行时 (CLR) 接口与表达式计算器通信。 因此,与 Visual Studio 调试引擎配合使用的表达式计算器必须支持 CLR(所有 CLR 调试接口的完整列表都可以在 windows 软件开发工具包(SDK)的debugref.doc中找到。