共用方式為


IDebugExpressionEvaluator

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

重要

在 Visual Studio 2015,這種實作運算式評估工具已被取代。 如需實作 CLR 運算式評估工具的資訊,請參閱CLR 運算式評估工具Managed 運算式評估工具範例

這個介面表示運算式評估工具。

語法

IDebugExpressionEvaluator : IUnknown  

實作者注意事項

運算式評估工具必須實作這個介面。

呼叫端資訊

若要取得此介面,具現化運算式評估工具,透過CoCreateInstance方法藉由使用 「 評估工具的類別識別碼 (CLSID)。 請參閱範例。

依照 Vtable 順序的方法

下表顯示的方法IDebugExpressionEvaluator

方法 說明
剖析 將運算式字串轉換成剖析的運算式。
GetMethodProperty 取得本機變數、 引數和其他屬性的方法。
GetMethodLocationProperty 將方法的位置和位移轉換到的記憶體位址。
SetLocale 決定要用來建立可列印結果的語言。
SetRegistryRoot 設定的登錄根目錄。 使用的並行偵錯。

備註

在典型的情況下,偵錯引擎 (DE) 具現化運算式評估工具 (EE) 由於呼叫ParseText。 DE 由於 DE 知道的語言和 EE 它要使用的供應商,取得登錄中 EE CLSID ( SDK 協助程式進行偵錯函式, GetEEMetric,幫助使用這項擷取)。

DE EE 具現化後,呼叫剖析剖析運算式,並將它存放在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;  
}  

另請參閱

運算式評估介面
ParseText
IDebugParsedExpression
EvaluateSync
SDK 協助程式進行偵錯