此接口表示表达式计算器。
IDebugExpressionEvaluator : IUnknown
实现者说明
表达式计算器必须实现此接口。
调用方的说明
若要获取此接口,通过 CoCreateInstance 方法实例化表达式计算器使用类 ID (CLSID) 则计算器。 请参见示例。
方法按 Vtable 顺序
下表显示 IDebugExpressionEvaluator方法。
方法 |
说明 |
---|---|
将表达式字符串转换为分析的表达式。 |
|
获取局部变量、参数和方法的其他属性。 |
|
将一个方法位置和偏移量内存地址中。 |
|
确定使用哪种语言创建可打印的结果。 |
|
设置注册表根。 用于并行调试。 |
备注
典型的状态,调试引擎 (DE)实例化表达式计算器 (EE)由于调用 IDebugExpressionContext2:: ParseText。 由于 DE 知道需要使用 EE 的语言和供应商, DE 从注册表 ( 调试的 SDK 帮助器 功能, GetEEMetric,则使用此检索的帮助获取 EE 的 CLSID)。
在 EE 实例化后, DE 在 IDebugParsedExpression 对象调用 IDebugExpressionEvaluator:: 分析 分析表达式和存储它。 之后,对 IDebugParsedExpression:: EvaluateSync 的调用计算表达式。
要求
标题:ee.h
命名空间:Microsoft.VisualStudio.Debugger.Interop
程序集:Microsoft.VisualStudio.Debugger.Interop.dll
示例
此示例演示如何实例化表达式计算器提供一个符号提供程序和一个地址在源代码。 此示例使用函数, GetEEMetric,从 调试的 SDK 帮助器 库, dbgmetric.lib。
IDebugExpressionEvaluator GetExpressionEvaluator(IDebugSymbolProvider pSymbolProvider,
IDebugAddress *pSourceAddress)
{
// This is typically defined globally but is specified here just
// for this example.
static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0Exp";
IDebugExpressionEvaluator *pEE = NULL;
if (pSymbolProvider != NULL && pSourceAddress != NULL) {
HRESULT hr = S_OK;
GUID languageGuid = { 0 };
GUID vendorGuid = { 0 };
hr = pSymbolProvider->GetLanguage(pSourceAddress,
&languageGuid,
&vendorGuid);
if (SUCCEEDED(hr)) {
CLSID clsidEE = { 0 };
CComPtr<IDebugExpressionEvaluator> spExpressionEvaluator;
// Get the expression evaluator's CLSID from the registry.
::GetEEMetric(languageGuid,
vendorGuid,
metricCLSID,
&clsidEE,
strRegistrationRoot);
if (!IsEqualGUID(clsidEE,GUID_NULL)) {
// Instantiate the expression evaluator.
spExpressionEvaluator.CoCreateInstance(clsidEE);
}
if (spExpressionEvaluator != NULL) {
pEE = spExpressionEvaluator.Detach();
}
}
}
return pEE;
}
请参见
参考
IDebugExpressionContext2:: ParseText
IDebugParsedExpression:: EvaluateSync