Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Метод 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<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...)
}
}
Требования
Требование | Ценность |
---|---|
заголовка | dbgmodel.h |