Partager via


Méthode IDebugHostEvaluator ::EvaluateExtendedExpression (dbgmodel.h)

La méthode EvaluateExtendedExpression est similaire à la méthode EvaluateExpression, sauf qu’elle rétablit les fonctionnalités non linguistiques supplémentaires qu’un hôte de débogage particulier choisit d’ajouter à son évaluateur d’expression. Pour les outils de débogage pour Windows, par exemple, cela active les types anonymes, les requêtes LINQ, les qualificateurs de module, les spécificateurs de format et d’autres fonctionnalités non C/C++.

Il est important de noter qu’il n’existe aucune garantie qu’une expression qui effectue une évaluation par rapport à un hôte via EvaluateExtendedExpression sera évaluée correctement par rapport à un autre hôte qui débogue la même langue. Les extensions dans l’évaluateur d’expression sont la vue d’ensemble d’un hôte donné. Il est vivement recommandé que les clients utilisent la méthode EvaluateExpression au lieu de la méthode EvaluateExtendedExpression pour cette raison exacte. L’utilisation de cette méthode réduit la portabilité de l’appelant.

Syntaxe

HRESULT EvaluateExtendedExpression(
  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 à évaluer. Cela peut utiliser des extensions privées d’hôte pour la syntaxe du langage.

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<IDebugHostEvaluator> spEval;
if (SUCCEEDED(spHost.As(&spEval)))
{
    ComPtr<IModelObject> spNotepadProcesses;

    // We can use any syntax that's private to the host (not only 
    // language syntax).  This is not necessarily portable from host to host
    if (SUCCEEDED(spEval->EvaluateExtendedExpression(
        USE_CURRENT_HOST_CONTEXT, 
        L"@$cursession->Processes.Where(p => p.Name == \"notepad.exe\")", 
        nullptr, 
        &spNotepadProcesses, 
        nullptr)))
    {
        // spNotepadProcesses will contain a collection of every process 
        // named (exactly) "notepad.exe".  Such can be iterated with IIterableConcept.
    }
}

Configuration requise

Condition requise Valeur
En-tête dbgmodel.h

Voir aussi

Interface IDebugHostEvaluator