计算 " 监视 " 窗口表达式

当执行暂停时, Visual Studio 会调用调试引擎 (DE)确定每个表达式的当前值在其监视的列表。 使用表达式计算器, DE 评估每个表达式 (EE)和 Visual Studio 显示其在 监视 窗口中的值。

这是概述监视如何列出计算表达式:

  1. Visual Studio 称为 " DE 的 IDebugStackFrame2:: GetExpressionContext 获取来计算表达式的表达式上下文。

  2. 对于监视的每个表达式列表, Visual Studio 会调用 IDebugExpressionContext2:: ParseText 将表达式文本转换为分析的表达式。

  3. IDebugExpressionContext2::ParseText 调用 IDebugExpressionEvaluator:: 分析 完成分析该文本实际工作并导致 IDebugParsedExpression 对象。

  4. IDebugExpressionContext2::ParseText 创建一 IDebugExpression2 对象并使 IDebugParsedExpression 对象传递给它。 这 IDebugExpression2 对象并返回到 Visual Studio。

  5. Visual Studio 会调用 IDebugExpression2:: EvaluateSync 计算已分析的表达式。

  6. IDebugExpression2::EvaluateSync 通过调用 IDebugParsedExpression:: EvaluateSync 执行实际计算并导致返回到 Visual Studio 的 IDebugProperty2 对象。

  7. Visual Studio 会调用 IDebugProperty2:: GetPropertyInfo 获取在 " 监视 " 然后显示列表表达式的值。

分析来计算

从分析复杂表达式的计算,该计算表达式处理分为两步花费的时间:1) 分析表达式,而 2) 计算已分析的表达式。 这样,计算可能发生多次,而表达式只需一次分析。 中间分析的表达式从又从、封装并返回作为 IDebugExpression2 对象的 IDebugParsedExpression 对象的 EE 返回。 IDebugExpression 对象延迟所有计算为 IDebugParsedExpression 对象。

备注

遵循此过程分为两步 EE 并不是必需的,即使 Visual Studio 假设此;EE 在同一个步骤可以分析和计算,当 IDebugParsedExpression:: EvaluateSync 调用时 (这是 MyCEE 示例的工作机制,例如)。如果该语言可能面临复杂表达式,您可能希望从计算步骤分离分析步骤。,在许多监视表达式显示时,这会增加在 Visual Studio 调试器的性能。

本节内容

相关章节

  • 计算上下文
    提供传递的参数,在调试引擎 (DE)调用表达式计算器时。 (EE)

请参见

其他资源

编写公共语言运行时表达式计算器