Condividi tramite


Metodo IDebugHostEvaluator3::EvaluateExpression (dbgmodel.h)

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

Vedere anche

'interfaccia IDebugHostEvaluator3