IDebugHostEvaluator2 ::EvaluateExpression, méthode (dbgmodel.h)
La méthode EvaluateExpression permet à l’hôte de débogage d’évaluer une expression de langage (par exemple, C++) et de retourner la valeur résultante de cette expression évaluée en tant que IModelObject. Cette variante particulière de la méthode autorise uniquement les constructions de langage. Toute fonctionnalité supplémentaire présentée dans l’évaluateur d’expression de l’hôte de débogage qui n’est pas présent dans le langage (par exemple, les méthodes de requête LINQ) est désactivée pour l’évaluation.
Étant donné que cette méthode utilise uniquement les éléments définis par le langage débogué, cette méthode est portable et sécurisée à utiliser de l’hôte à l’hôte. Un hôte de débogage qui implémente le débogage pour une langue particulière doit évaluer une expression via cette méthode de la même façon que tout autre hôte qui débogue le même langage. Par conséquent, il s’agit de la méthode recommandée pour effectuer une évaluation d’expression.
Syntaxe
HRESULT EvaluateExpression(
IDebugHostContext *context,
PCWSTR expression,
IModelObject *bindingContext,
_COM_Errorptr_ IModelObject **result,
IKeyStore **metadata
);
Paramètres
context
Contexte hôte dans lequel l’évaluation d’expression se produit. S’il existe, par exemple, des lectures de mémoire de la cible en raison de déréférences de pointeur, l’espace d’adressage dans lequel ces lectures de mémoire sont effectuées est donné par cet argument.
expression
Expression de langage à évaluer. Cette chaîne ne peut contenir qu’une expression valide dans la langue en cours de débogage. Il ne peut contenir aucune construction supplémentaire qui peut être disponible dans l’évaluateur d’expression de l’hôte de débogage.
bindingContext
Contexte de liaison dans lequel les noms de symboles (variable) seront recherchés. Pour C++, cela équivaut sémantiquement à cette valeur de pointeur.
result
La valeur résultante de l’évaluation de l’expression est retournée ici.
metadata
Toutes les métadonnées associées à l’expression ou au résultat sont retournées ici.
Valeur de retour
Cette méthode retourne HRESULT qui indique la réussite ou l’échec.
Remarques
Exemple de code
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...)
}
}
Exigences
Exigence | Valeur |
---|---|
d’en-tête | dbgmodel.h |