Partager via


Méthode IDebugHostEvaluator2 ::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 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ésent 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ûre à 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 manière 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 a lieu. S’il existe, pour 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 déboguée. 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<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...)
    }
}

Configuration requise

Condition requise Valeur
En-tête dbgmodel.h

Voir aussi

Interface IDebugHostEvaluator2