IDebugHostEvaluator3 ::EvaluateExtendedExpression, méthode (dbgmodel.h)
La méthode EvaluateExtendedExpression est similaire à la méthode EvaluateExpression, sauf qu’elle retourne des fonctionnalités supplémentaires non linguistiques 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 permet des types anonymes, des requêtes LINQ, des qualificateurs de module, des spécificateurs de format et d’autres fonctionnalités autres que C/C++.
Il est important de noter qu’il n’existe aucune garantie qu’une expression qui est évaluée par rapport à un hôte via EvaluateExtendedExpression évalue correctement par rapport à un autre hôte qui débogue la même langue. Les extensions de l’évaluateur d’expression sont la vue d’ensemble d’un hôte donné. Il est fortement 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 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 à é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 (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<IDebugHostEvaluator2> 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.
}
}
Exigences
Exigence | Valeur |
---|---|
d’en-tête | dbgmodel.h |