Udostępnij za pośrednictwem


IDebugExpressionEvaluator

Ważne

W programie Visual Studio 2015 ten sposób implementowania ewaluatorów wyrażeń jest przestarzały. Aby uzyskać informacje na temat implementowania ewaluatorów wyrażeń CLR, zobacz CLR Expression Evaluators and Managed Expression Evaluator Sample (Ewaluator wyrażeń zarządzanych).

Ten interfejs reprezentuje ewaluatora wyrażeń.

Składnia

IDebugExpressionEvaluator : IUnknown

Uwagi dotyczące implementacji

Ewaluator wyrażeń musi zaimplementować ten interfejs.

Uwagi dotyczące wywoływania

Aby uzyskać ten interfejs, utwórz wystąpienie ewaluatora wyrażeń za pomocą CoCreateInstance metody przy użyciu identyfikatora klasy (CLSID) ewaluatora. Zobacz przykład.

Metody w tabeli Vtable Order

W poniższej tabeli przedstawiono metody .IDebugExpressionEvaluator

Metoda opis
Analizuj Konwertuje ciąg wyrażenia na wyrażenie przeanalizowane.
GetMethodProperty Pobiera zmienne lokalne, argumenty i inne właściwości metody.
GetMethodLocationProperty Konwertuje lokalizację metody i przesunięcie na adres pamięci.
SetLocale Określa język używany do tworzenia wyników drukowalnych.
SetRegistryRoot Ustawia katalog główny rejestru. Służy do debugowania równoległego.

Uwagi

W typowej sytuacji aparat debugowania tworzy wystąpienie ewaluatora wyrażeń (EE) w wyniku wywołania metody ParseText. Ponieważ de zna język i dostawcę EE, którego chce użyć, de pobiera identyfikator CLSID EE z rejestru ( pomocnicy zestawu SDK do debugowania funkcji GetEEMetric, pomaga w tym pobieraniu).

Po utworzeniu wystąpienia EE de wywołuje metodę Parse , aby przeanalizować wyrażenie i zapisać je w obiekcie IDebugParsedExpression . Później wywołanie funkcji EvaluateSync oblicza wyrażenie.

Wymagania

Nagłówek: ee.h

Przestrzeń nazw: Microsoft.VisualStudio.Debugger.Interop

Zestaw: Microsoft.VisualStudio.Debugger.Interop.dll

Przykład

W tym przykładzie pokazano, jak utworzyć wystąpienie ewaluatora wyrażeń przy użyciu dostawcy symboli i adresu w kodzie źródłowym. W tym przykładzie użyto funkcji GetEEMetric, z pomocników zestawu SDK dla biblioteki debugowania 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;
}

Zobacz też