Metodo IDebugHostEvaluator2::EvaluateExpression (dbgmodel.h)
Il metodo EvaluateExpression consente all'host di debug di valutare un linguaggio (ad esempio: espressione C++) e restituire il valore risultante di tale valutazione dell'espressione casellata come IModelObject. Questa particolare variante del metodo consente solo costrutti del linguaggio. Tutte le funzionalità aggiuntive presentate all'interno dell'analizzatore di espressioni dell'host di debug che non sono presenti nel linguaggio (ad esempio, i metodi di query LINQ) vengono disattivati per la valutazione.
Poiché questo metodo usa solo gli elementi definiti dal linguaggio sottoposto a debug, questo metodo è portatile e sicuro da usare dall'host all'host. Un host di debug che implementa il debug per un linguaggio specifico deve valutare un'espressione tramite questo metodo nello stesso modo di qualsiasi altro host che esegue il debug dello stesso linguaggio. Di conseguenza, questo è il metodo preferito per eseguire la valutazione delle espressioni.
Sintassi
HRESULT EvaluateExpression(
IDebugHostContext *context,
PCWSTR expression,
IModelObject *bindingContext,
_COM_Errorptr_ IModelObject **result,
IKeyStore **metadata
);
Parametri
context
Contesto host in cui si verifica la valutazione dell'espressione. Se sono presenti, ad esempio, letture di memoria della destinazione a causa di dereferenza puntatore, lo spazio degli indirizzi in cui vengono eseguite le letture di memoria viene assegnato da questo argomento.
expression
Espressione di linguaggio da valutare. Questa stringa può contenere solo un'espressione valida nel linguaggio sottoposto a debug. Potrebbe non contenere costrutti aggiuntivi che possono essere disponibili nell'analizzatore di espressioni dell'host di debug.
bindingContext
Contesto di associazione in cui verranno cercati i nomi dei simboli (variabile). Per C++, questo valore è semanticamente equivalente al valore del puntatore.
result
Il valore risultante della valutazione dell'espressione verrà restituito qui.
metadata
Tutti i metadati associati all'espressione o al risultato vengono restituiti qui.
Valore restituito
Questo metodo restituisce HRESULT che indica l'esito positivo o l'errore.
Commenti
Codice di esempio
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...)
}
}
Requisiti
Requisito | Valore |
---|---|
Intestazione | dbgmodel.h |