Condividi tramite


IDebugExpressionEvaluator

questa interfaccia rappresenta l'analizzatore di espressioni.

IDebugExpressionEvaluator : IUnknown

Note per gli implementatori

l'analizzatore di espressioni deve implementare questa interfaccia.

Note per i chiamanti

Per ottenere questa interfaccia, creare un'istanza dell'analizzatore di espressioni con il metodo di CoCreateInstance utilizzando l'ID di classe (CLSID) evaluator. vedere l'esempio.

Metodi nell'ordine di Vtable

Nella tabella seguente sono elencati i metodi di IDebugExpressionEvaluator.

Metodo

Descrizione

IDebugExpressionEvaluator:: Di traccia

Converte una stringa dell'espressione in un'espressione analizzata.

IDebugExpressionEvaluator:: GetMethodProperty

Ottiene le variabili locali, gli argomenti e altre proprietà di un metodo.

IDebugExpressionEvaluator:: GetMethodLocationProperty

Converte un percorso e un offset del metodo in un indirizzo di memoria.

IDebugExpressionEvaluator:: SetLocale

Determina il linguaggio da utilizzare per creare i risultati stampabili.

IDebugExpressionEvaluator:: SetRegistryRoot

Imposta la chiave radice del Registro di sistema. Utilizzato per il debug side-by-side.

Note

In una situazione tipica, il motore di debug (DE) creare un'istanza l'analizzatore di (EE) espressioni come risultato di una chiamata a IDebugExpressionContext2:: ParseText. Poiché il DE sa che la lingua e il fornitore dell'EE desidera utilizzare, il DE ottiene il CLSID dell'EE dal Registro di sistema ( Supporto di SDK per il debug la funzione, GetEEMetric, guida all'aggiornamento).

Dopo avere l'EE viene creata un'istanza, le chiamate di IDebugExpressionEvaluator:: Di traccia DE per analizzare l'espressione e IDebugParsedExpression archiviarle in un oggetto. Successivamente, una chiamata IDebugParsedExpression:: EvaluateSync valuta l'espressione.

Requisiti

intestazione: ee.h

Spazio dei nomi: Microsoft.VisualStudio.Debugger.Interop

Assembly: Microsoft.VisualStudio.Debugger.Interop.dll

Esempio

In questo esempio viene illustrato come creare un'istanza dell'analizzatore di espressioni fornito un provider del simbolo e un indirizzo nel codice sorgente. In questo esempio viene utilizzata una funzione, GetEEMetric, Supporto di SDK per il debug dalla raccolta, 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;
}

Vedere anche

Riferimenti

IDebugExpressionContext2:: ParseText

IDebugParsedExpression

IDebugParsedExpression:: EvaluateSync

Supporto di SDK per il debug

Concetti

Interfacce di valutazione di espressioni