Freigeben über


IDebugExpressionEvaluator

Diese Schnittstelle stellt die Ausdrucksauswertung dar.

IDebugExpressionEvaluator : IUnknown

Hinweise für Implementierer

Die Ausdrucksauswertung muss diese Schnittstelle implementieren.

Hinweise für Aufrufer

Um diese Schnittstelle zu erhalten, instanziieren Sie den von der Ausdrucksauswertung CoCreateInstance-Methode, indem Sie die Klassen-ID (CLSID) mit einem Auswertungsdelegaten verwenden. Weitere Informationen finden Sie im Beispiel.

Methoden in die Vtable-Reihenfolge

In der folgenden Tabelle werden die Methoden von IDebugExpressionEvaluatoran.

Methode

Beschreibung

IDebugExpressionEvaluator::Analyse

Konvertiert eine Ausdruckszeichenfolge in ein analysierten Ausdruck.

IDebugExpressionEvaluator::GetMethodProperty

Ruft die lokalen Variablen, Argumente und andere Eigenschaften einer Methode ab.

IDebugExpressionEvaluator::GetMethodLocationProperty

Konvertiert einen Speicherort für Methoden und der Offset in eine Speicheradresse.

IDebugExpressionEvaluator::SetLocale

Bestimmt, das zum Erstellen von druckbaren Ergebnisse zu verwendende Sprache.

IDebugExpressionEvaluator::SetRegistryRoot

Legt den Registrierungsstamm fest. Wird für paralleles Debuggen.

Hinweise

In einer typischen Fall instanziiert das Debugmodul (DE) den Ausdrucksauswertung (EE aufgrund eines Aufrufs von IDebugExpressionContext2::ParseText). Da DE weiß, dass die Sprache und der Anbieter der EE, die sie verwenden möchte, ruft die CLSID der DE EE aus der Registrierung ab ,die SDK-Hilfen für das Debuggen-Funktion, GetEEMetric, die mit dem Abruf).

Nachdem die EE instanziiert wurde, ruft DE IDebugExpressionEvaluator::Analyse an, um den Ausdruck zu analysieren und in ein IDebugParsedExpression-Objekt gespeichert werden. Später wird ein Aufruf IDebugParsedExpression::EvaluateSync den Ausdruck aus.

Anforderungen

Header: ee.h

Namespace: Microsoft.VisualStudio.Debugger.Interop

Assembly: Microsoft.VisualStudio.Debugger.Interop.dll

Beispiel

Dieses Beispiel zeigt, wie der angegebenen Ausdrucksauswertung ein Symbol und eine Adresse im Quellcode instanziiert. In diesem Beispiel wird eine Funktion, GetEEMetric, aus der SDK-Hilfen für das Debuggen Bibliothek, 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;
}

Siehe auch

Referenz

IDebugExpressionContext2::ParseText

IDebugParsedExpression

IDebugParsedExpression::EvaluateSync

SDK-Hilfen für das Debuggen

Konzepte

Ausdrucksauswertungs-Schnittstellen