Freigeben über


IDebugHostEvaluator2::EvaluateExpression-Methode (dbgmodel.h)

Die EvaluateExpression-Methode ermöglicht Anforderungen des Debughosts, einen Sprachausdruck (z. B. C++) auszuwerten und den resultierenden Wert dieser Ausdrucksauswertung als IModelObject zurückzugeben. Diese spezielle Variante der -Methode lässt nur Sprachkonstrukte zu. Alle zusätzlichen Funktionen, die in der Ausdrucksauswertung des Debughosts angezeigt werden, der in der Sprache nicht vorhanden ist (z. B. LINQ-Abfragemethoden), werden für die Auswertung deaktiviert.

Da diese Methode nur Dinge verwendet, die durch die zu debuggende Sprache definiert werden, ist diese Methode portierbar und sicher von Host zu Host zu verwenden. Ein Debughost, der das Debuggen für eine bestimmte Sprache implementiert, sollte einen Ausdruck über diese Methode auf die gleiche Weise auswerten wie jeder andere Host, der dieselbe Sprache debuggt. Daher ist dies die bevorzugte Methode für die Auswertung von Ausdrücken.

Syntax

HRESULT EvaluateExpression(
  IDebugHostContext           *context,
  PCWSTR                      expression,
  IModelObject                *bindingContext,
  _COM_Errorptr_ IModelObject **result,
  IKeyStore                   **metadata
);

Parameter

context

Der Hostkontext, in dem die Ausdrucksauswertung erfolgt. Wenn für instance Speicherlesevorgänge des Ziels aufgrund von Zeigerdereferenzen vorhanden sind, wird der Adressraum, in dem diese Speicherlesungen vorgenommen werden, durch dieses Argument angegeben.

expression

Der auszuwertende Sprachausdruck. Diese Zeichenfolge darf nur einen Ausdruck enthalten, der in der zu debuggenden Sprache gültig ist. Es darf keine zusätzlichen Konstrukte enthalten, die in der Ausdrucksauswertung des Debughosts verfügbar sind.

bindingContext

Der Bindungskontext, in dem Symbolnamen (Variablennamen) gesucht werden. Für C++ entspricht dies semantisch dem wert dieses Zeigers.

result

Der resultierende Wert der Ausdrucksauswertung wird hier zurückgegeben.

metadata

Alle Metadaten, die dem Ausdruck oder Ergebnis zugeordnet sind, werden hier zurückgegeben.

Rückgabewert

Diese Methode gibt HRESULT zurück, das den Erfolg oder Fehler angibt.

Hinweise

Codebeispiel

ComPtr<IDebugHost> spHost;   /* get the host */
ComPtr<IModelObject> spThis; /* get some object, an example here: some native 
                                object with fields m_intVal and m_intVal2 */

ComPtr<IDebugHostEvaluator2> spEval;
if (SUCCEEDED(spHost.As(&spEval)))
{
    ComPtr<IModelObject> spResult;
    ComPtr<IKeyStore> spMetadata;
    if (SUCCEEDED(spEval->EvaluateExpression(
        USE_CURRENT_HOST_CONTEXT, 
        L"m_intVal + this->m_intVal2", 
        spThis.Get(), 
        &spResult, 
        &spMetadata)))
    {
        // spResult will have the result of a language evaluation of 
        // "m_intVal + this->m_intVal2" where the name binding context 
        // (e.g.: *this* pointer) is spThis
        // spMetadata will have any additional metadata (e.g.: display radix, etc...)
    }
}

Anforderungen

Anforderung Wert
Header dbgmodel.h

Weitere Informationen

IDebugHostEvaluator2-Schnittstelle