Freigeben über


IDebugExpressionEvaluator

Wichtig

Seit Visual Studio 2015 ist diese Art der Implementierung von Ausdrucksauswertungen veraltet. Informationen zum Implementieren von CLR-Ausdrucksauswertern finden Sie unter CLR Expression Evaluators and Managed Expression Evaluator Sample.For information about implementing CLR expression evaluators, please see CLR Expression Evaluator Sample.

Diese Schnittstelle stellt den Ausdrucksauswerter dar.

Syntax

IDebugExpressionEvaluator : IUnknown

Hinweise für Implementierer

Der Ausdrucksauswerter muss diese Schnittstelle implementieren.

Hinweise für Aufrufer

Um diese Schnittstelle abzurufen, instanziieren Sie den Ausdrucksauswert über die CoCreateInstance Methode mithilfe der Klassen-ID (CLSID) des Evaluators. Sehen Sie sich das Beispiel an.

Methoden in Vtable-Reihenfolge

In der folgenden Tabelle sind die Methoden von IDebugExpressionEvaluator aufgeführt.

Methode Beschreibung
Parse Konvertiert eine Ausdruckszeichenfolge in einen analysierten Ausdruck.
GetMethodProperty Ruft die lokalen Variablen, Argumente und andere Eigenschaften einer Methode ab.
GetMethodLocationProperty Wandelt einen Methodenspeicherort und einen Offset in eine Speicheradresse um.
SetLocale Bestimmt, welche Sprache zum Erstellen druckbarer Ergebnisse verwendet werden soll.
SetRegistryRoot Legt den Registrierungsstamm fest. Wird für das parallele Debuggen verwendet.

Hinweise

In einer typischen Situation instanziiert das Debugmodul (DE) den Ausdruck evaluator (EE) als Ergebnis eines Aufrufs von ParseText. Da die DE die Sprache und den Anbieter des EE kennt, den sie verwenden möchte, ruft die DE die CLSID des EE aus der Registrierung ab (die SDK-Hilfsprogramme für debugging-Funktion , GetEEMetrichilft bei diesem Abruf).

Nachdem der EE instanziiert wurde, ruft die DE Parse auf, um den Ausdruck zu analysieren und in einem IDebugParsedExpression -Objekt zu speichern. Später wertet ein Aufruf von EvaluateSync den Ausdruck aus.

Anforderungen

Kopfzeile: ee.h

Namespace: Microsoft.VisualStudio.Debugger.Interop

Assembly: Microsoft.VisualStudio.Debugger.Interop.dll

Beispiel

In diesem Beispiel wird gezeigt, wie der Ausdrucksauswerter anhand eines Symbolanbieters und einer Adresse im Quellcode instanziieren kann. In diesem Beispiel wird eine Funktion aus GetEEMetricder SDK-Hilfsprogramm für debugging-Bibliothek dbgmetric.lib verwendet.

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;
}

Siehe auch