IDebugExpressionEvaluator

Důležité

v Visual Studio 2015 je tento způsob implementace vyhodnocovacích vyhodnocení výrazů zastaralý. Informace o implementaci vyhodnocovacích vyhodnocení výrazů CLR naleznete v tématu vyhodnocovací filtry výrazů CLR a Ukázka vyhodnocovacího filtru spravovaného výrazu.

Toto rozhraní představuje vyhodnocovací filtr výrazů.

Syntax

IDebugExpressionEvaluator : IUnknown

Poznámky pro implementátory

Vyhodnocení výrazu musí implementovat toto rozhraní.

Poznámky pro volající

Chcete-li získat toto rozhraní, vytvořte instanci vyhodnocení výrazu prostřednictvím CoCreateInstance metody pomocí ID třídy (CLSID) vyhodnocení. Podívejte se na příklad.

Metody v pořadí vtable

V následující tabulce jsou uvedeny metody IDebugExpressionEvaluator .

Metoda Popis
Parse (Parsování) Převede řetězec výrazu na analyzovaný výraz.
GetMethodProperty Získá místní proměnné, argumenty a další vlastnosti metody.
GetMethodLocationProperty Převede umístění metody a posun na adresu paměti.
SetLocale Určuje jazyk, který se použije k vytváření tisknutelných výsledků.
SetRegistryRoot Nastaví kořen registru. Používá se pro souběžné ladění.

Poznámky

v typické situaci modul ladění (DE) vytvoří instanci vyhodnocovacího filtru výrazů (EE) jako výsledek volání ParseText. vzhledem k tomu, že de zná jazyk a dodavatele EE, které chce použít, de získá identifikátor CLSID EE z registru ( pomocníka sady SDK pro funkci ladění , který GetEEMetric pomáhá s tímto načítáním).

po vytvoření instance EE analyzuje DE volání analýzu výrazu a uloží jej do objektu IDebugParsedExpression . Později volání EvaluateSync vyhodnotí výraz.

Požadavky

Záhlaví: ee. h

Obor názvů: Microsoft. VisualStudio. Debugger. Interop

Sestavení: Microsoft.VisualStudio.Debugger.Interop.dll

Příklad

Tento příklad ukazuje, jak vytvořit instanci vyhodnocovacího filtru pro daný poskytovatele symbolů a adresu ve zdrojovém kódu. Tento příklad používá funkci, GetEEMetric z pomocníků sady SDK pro ladění knihovny 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;
}

Viz také