Método IDebugHostEvaluator3::EvaluateExpression (dbgmodel.h)
O método EvaluateExpression permite que o host de depuração avalie uma expressão de linguagem (por exemplo: C++) e retorne o valor resultante dessa avaliação de expressão em caixa como um IModelObject. Essa variante específica do método só permite constructos de linguagem. Qualquer funcionalidade adicional apresentada no avaliador de expressão do host de depuração que não está presente no idioma (por exemplo: métodos de consulta LINQ) está desativada para a avaliação.
Como esse método usa apenas itens definidos pela linguagem que está sendo depurada, esse método é portátil e seguro para usar do host para o host. Um host de depuração que implementa a depuração de uma linguagem específica deve avaliar uma expressão por meio desse método da mesma forma que qualquer outro host que depure o mesmo idioma. Dessa forma, esse é o método preferencial para fazer a avaliação da expressão.
Sintaxe
HRESULT EvaluateExpression(
IDebugHostContext *context,
PCWSTR expression,
IModelObject *bindingContext,
_COM_Errorptr_ IModelObject **result,
IKeyStore **metadata
);
Parâmetros
context
O contexto do host no qual a avaliação da expressão ocorre. Se houver, por exemplo, leituras de memória do destino devido a desreferências de ponteiro, o espaço de endereço no qual essas leituras de memória são feitas é fornecido por esse argumento.
expression
A expressão de linguagem a ser avaliada. Essa cadeia de caracteres pode conter apenas uma expressão válida no idioma que está sendo depurado. Ele pode não conter construções adicionais que possam estar disponíveis no avaliador de expressão do host de depuração.
bindingContext
O contexto de associação no qual os nomes de símbolo (variável) serão pesquisados. Para C++, isso é semanticamente equivalente a esse valor de ponteiro.
result
O valor resultante da avaliação da expressão será retornado aqui.
metadata
Todos os metadados associados à expressão ou ao resultado são retornados aqui.
Valor de retorno
Esse método retorna HRESULT que indica êxito ou falha.
Observações
de exemplo de código
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...)
}
}
Requisitos
Requisito | Valor |
---|---|
cabeçalho | dbgmodel.h |
Consulte também
interface IDebugHostEvaluator3