Partager via


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

Voir aussi

interface IDebugHostEvaluator2