Méthode IDebugHostEvaluator ::EvaluateExpression (dbgmodel.h)
La méthode EvaluateExpression permet aux demandes de l’hôte de débogage d’évaluer une expression de langage (par exemple, C++) et de retourner la valeur résultante de cette évaluation d’expression boxée en tant qu’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ésente dans le langage (par exemple, méthodes de requête LINQ) est désactivée pour l’évaluation.
Étant donné que cette méthode utilise uniquement des éléments définis par la langue déboguée, cette méthode est portable et sécurisée à utiliser d’un hôte à l’autre. Un hôte de débogage qui implémente le débogage pour un langage particulier doit évaluer une expression via cette méthode de la même façon que tout autre hôte qui débogue la même langue. Par conséquent, il s’agit de la méthode préférée pour effectuer l’évaluation des expressions.
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 de l’expression se produit. S’il existe, par instance, 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 pas contenir de constructions supplémentaires qui peuvent être disponibles dans l’évaluateur d’expression de l’hôte de débogage.
bindingContext
Contexte de liaison dans lequel les noms de symboles (variables) seront recherchés. Pour C++, cela équivaut sémantiquement à la valeur de ce pointeur.
result
La valeur résultante de l’évaluation de l’expression sera retournée ici.
metadata
Toutes les métadonnées associées à l’expression ou au résultat sont retournées ici.
Valeur retournée
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<IDebugHostEvaluator> 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...)
}
}
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | dbgmodel.h |