IDebugExpressionEvaluator
重要
在 Visual Studio 2015 中,實作運算式評估工具的方式已被取代。 如需實作 CLR 運算式評估工具的相關信息,請參閱 CLR 運算式評估工具 與 Managed 運算式評估工具範例。
這個介面代表表達式評估工具。
語法
IDebugExpressionEvaluator : IUnknown
實作者的注意事項
表達式評估工具必須實作這個介面。
呼叫端注意事項
若要取得這個介面,請使用評估工具 CoCreateInstance
的類別識別碼 (CLSID) 透過 方法具現化運算式評估工具。 請參閱範例。
依照 Vtable 順序的方法
下表顯示 IDebugExpressionEvaluator
方法。
方法 | 描述 |
---|---|
剖析 | 將表達式字串轉換為剖析的表達式。 |
GetMethodProperty | 取得方法的局部變數、自變數和其他屬性。 |
GetMethodLocationProperty | 將方法位置和位移轉換成記憶體位址。 |
SetLocale | 決定要用來建立可列印結果的語言。 |
SetRegistryRoot | 設定登錄根目錄。 用於並存偵錯。 |
備註
在一般情況下,偵錯引擎會因為呼叫 ParseText 而具現化表達式評估工具 (EE)。 由於 DE 知道想要使用之 EE 的語言和廠商,因此 DE 會從登錄取得 EE 的 CLSID( 適用於偵 錯的 SDK 協助程式函 GetEEMetric
式 ,可協助進行此擷取)。
具現化 EE 之後,DE 會呼叫 Parse 來剖析表示式,並將其儲存在 IDebugParsedExpression 物件中。 之後,EvaluateSync 的呼叫會評估表達式。
需求
標頭:ee.h
命名空間:Microsoft.VisualStudio.Debugger.Interop
元件:Microsoft.VisualStudio.Debugger.Interop.dll
範例
這個範例示範如何具現化指定符號提供者和原始碼中位址的表達式評估工具。 這個範例會從適用於偵錯連結庫 dbgmetric.lib 的 SDK 協助程式使用函GetEEMetric
式 。
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;
}