IDebugHostEvaluator3::EvaluateExpression-Methode (dbgmodel.h)
Mit der EvaluateExpression-Methode kann der Debughost einen Sprachausdruck (z. B. C++) auswerten und den resultierenden Wert dieses Ausdrucksauswertungsfelds als IModelObject-zurückgeben. Diese spezielle Variante der Methode lässt nur Sprachkonstrukte zu. Alle zusätzlichen Funktionen, die innerhalb des Ausdrucksvaluators des Debughosts angezeigt werden, der in der Sprache nicht vorhanden ist (z. B. LINQ-Abfragemethoden), wird für die Auswertung deaktiviert.
Da diese Methode nur Elemente verwendet, die von der zu debuggenden 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. Dies ist daher die bevorzugte Methode zum Ausführen der Ausdrucksauswertung.
Syntax
HRESULT EvaluateExpression(
IDebugHostContext *context,
PCWSTR expression,
IModelObject *bindingContext,
_COM_Errorptr_ IModelObject **result,
IKeyStore **metadata
);
Parameter
context
Der Hostkontext, in dem die Ausdrucksauswertung auftritt. Wenn es z. B. Speicherlesevorgänge des Ziels aufgrund von Zeigerentleitungen gibt, wird der Adressraum, in dem diese Speicherlesevorgänge 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 im Ausdrucksauswertungs-Evaluator des Debughosts verfügbar sein können.
bindingContext
Der Bindungskontext, in dem Symbolnamen (Variable) nachschlagen werden. Bei C++ entspricht dies semantisch dem Zeigerwert.
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 Erfolg oder Fehler angibt.
Bemerkungen
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 |