在中断模式下,IDE 必须计算涉及多个程序变量的简单表达式。 若要完成计算,调试引擎(DE)必须分析并计算输入到 IDE 窗口之一的表达式。
表达式是使用 IDebugExpressionContext2::P arseText 方法创建的,并由生成的 IDebugExpression2 接口表示。
IDebugExpression2 接口由 DE 实现,并调用其 EvalAsync 方法,以将 IDebugProperty2 接口返回到 IDE,以便在 IDE 中显示表达式计算的结果。 IDebugProperty2::GetPropertyInfo 返回一个结构,该结构用于将表达式的值放入 监视 窗口或 局部变量 窗口中。
调试包或会话调试管理器 (SDM) 调用 IDebugExpression2::EvaluateAsync 或 EvaluateSync 以获取表示评估结果的 IDebugProperty2 接口。
IDebugProperty2 具有返回表达式的名称、类型和值的方法。 此信息显示在各种调试器窗口中。
使用表达式求值
若要使用表达式计算,必须实现 IDebugExpressionContext2::P arseText 方法和 IDebugExpression2 接口的所有方法,如下表所示。
| 方法 | Description |
|---|---|
| EvaluateAsync | 异步计算表达式。 |
| 中止 | 结束异步表达式计算。 |
| EvaluateSync | 同步计算表达式。 |
同步和异步评估需要实现 IDebugProperty2::GetPropertyInfo 方法。 异步表达式计算需要 实现 IDebugExpressionEvaluationCompleteEvent2。