Метод IDebugHostEvaluator::EvaluateExpression (dbgmodel.h)
Метод EvaluateExpression позволяет запрашивать узел отладки для оценки выражения языка (например, C++) и возвращать итоговое значение этого вычисления выражения в виде IModelObject. Этот конкретный вариант метода допускает только языковые конструкции. Любые дополнительные функциональные возможности, представленные в средстве оценки выражений узла отладки, отсутствующие в языке (например, методы запроса LINQ), отключены для оценки.
Так как этот метод использует только элементы, определенные языком отладки, этот метод является переносимым и безопасным для использования от узла к узлу. Узел отладки, реализующий отладку для определенного языка, должен вычислять выражение с помощью этого метода так же, как и любой другой узел, выполняющий отладку на том же языке. Таким образом, это предпочтительный метод для вычисления выражений.
Синтаксис
HRESULT EvaluateExpression(
IDebugHostContext *context,
PCWSTR expression,
IModelObject *bindingContext,
_COM_Errorptr_ IModelObject **result,
IKeyStore **metadata
);
Параметры
context
Контекст узла, в котором выполняется вычисление выражения. Если имеются, например, операции чтения памяти целевого объекта из-за разыменования указателей, адресное пространство, в котором выполняются операции чтения памяти, задается этим аргументом.
expression
Вычисляемая выражению языка. Эта строка может содержать только выражение, допустимое на отлаживаемом языке. Он может не содержать дополнительных конструкций, которые могут быть доступны в средстве оценки выражений узла отладки.
bindingContext
Контекст привязки, в котором будут искаться имена символов (переменных). Для C++ это семантически эквивалентно значению этого указателя.
result
Здесь будет возвращено итоговое значение вычисления выражения.
metadata
Здесь возвращаются все метаданные, связанные с выражением или результатом.
Возвращаемое значение
Этот метод возвращает HRESULT, который указывает на успех или сбой.
Комментарии
Образец кода
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<IDebugHostEvaluator> 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...)
}
}
Требования
Требование | Значение |
---|---|
Заголовок | dbgmodel.h |