IDebugExpressionEvaluator
重要
在 Visual Studio 2015 中,这种实现表达式计算器的方法已弃用。 有关实现 CLR 表达式计算器的信息,请参阅 CLR 表达式计算器 和 托管表达式计算器示例。
此接口表示表达式计算器。
语法
IDebugExpressionEvaluator : IUnknown
实现者须知
表达式计算器必须实现此接口。
对调用者的说明
若要获取此接口,请使用计算器的类 ID(CLSID)通过 CoCreateInstance
方法实例化表达式计算器。 请参阅示例。
Vtable 顺序中的方法
下表显示了 IDebugExpressionEvaluator
方法。
方法 | 说明 |
---|---|
Parse | 将表达式字符串转换为已分析的表达式。 |
GetMethodProperty | 获取方法的局部变量、参数和其他属性。 |
GetMethodLocationProperty | 将方法位置和偏移量转换为内存地址。 |
SetLocale | 确定用于创建可打印结果的语言。 |
SetRegistryRoot | 设置注册表根目录。 用于并行调试。 |
备注
在典型情况下,调试引擎(DE)在调用 ParseText 时实例化表达式计算器(企业版)。 由于 DE 知道要使用的企业版的语言和供应商,因此 DE 从注册表中获取企业版的 CLSID(用于调试函数的 SDK 帮助程序,GetEEMetric
有助于进行此检索)。
实例化企业版后,DE 调用 Parse 分析表达式并将其存储在 IDebugParsedExpression 对象中。 稍后,对 EvaluateSync 的调用将计算表达式。
要求
标头:ee.h
命名空间:Microsoft.VisualStudio.Debugger.Interop
程序集:Microsoft.VisualStudio.Debugger.Interop.dll
示例
此示例演示如何在源代码中实例化给定符号提供程序和地址的表达式计算器。 此示例使用 SDK 帮助程序中的函数GetEEMetric
来调试库 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;
}