Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il metodo EvaluateExpression consente all'host di debug di valutare un'espressione del linguaggio ,ad esempio C++, e restituire il valore risultante della valutazione dell'espressione boxed come IModelObject. Questa variante specifica del metodo consente solo costrutti di linguaggio. Tutte le funzionalità aggiuntive presentate all'interno dell'analizzatore di espressioni dell'host di debug non presenti nel linguaggio (ad esempio, i metodi di query LINQ) vengono disattivate per la valutazione.
Poiché questo metodo usa solo 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 determinato linguaggio 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 viene eseguita la valutazione dell'espressione. Se sono presenti, ad esempio, letture di memoria della destinazione a causa di dereferenziazioni del puntatore, lo spazio degli indirizzi in cui vengono eseguite tali letture di memoria viene fornito da questo argomento.
expression
Espressione di linguaggio da valutare. Questa stringa può contenere solo un'espressione valida nel linguaggio di cui è in corso il debug. Potrebbe non contenere costrutti aggiuntivi che potrebbero essere disponibili nell'analizzatore di espressioni dell'host di debug.
bindingContext
Contesto di associazione in cui verranno cercati i nomi di simbolo (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 negativo.
Osservazioni
esempio di codice
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...)
}
}
Fabbisogno
Requisito | Valore |
---|---|
intestazione | dbgmodel.h |