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 |