Интерфейс ICorDebugEval

Предоставляет методы, позволяющие отладчику выполнять код в контексте отлаживаемого кода.

Методы

Метод Описание
Метод Abort Прерывает вычисление, выполняемое этим ICorDebugEval объектом в данный момент.
Метод CallFunction Настраивает вызов указанной функции. (Устарело в платформа .NET Framework версии 2.0; используйте ICorDebugEval2::CallParameterizedFunction.)
Метод CreateValue Получает указатель интерфейса на объект "ICorDebugValue" указанного типа с начальным значением, равным нулю или null. (Устарело в платформа .NET Framework 2.0; используйте вместо него ICorDebugEval2::CreateValueForType.)
Метод GetResult Возвращает указатель интерфейса на объект , ICorDebugValue содержащий результаты оценки.
Метод GetThread Возвращает указатель интерфейса на "ICorDebugThread", где выполняется или будет выполняться эта оценка.
Метод IsActive Возвращает значение, указывающее, выполняется ли данный ICorDebugEval объект в данный момент.
Метод NewArray Выделяет новый массив с указанным типом и измерениями элемента. (Устарело в платформа .NET Framework 2.0; используйте вместо него ICorDebugEval2::NewParameterizedArray.)
Метод NewObject Выделяет новый экземпляр объекта и вызывает указанный метод конструктора. (Устарело в платформа .NET Framework 2.0; используйте вместо него ICorDebugEval2::NewParameterizedObject.)
Метод NewObjectNoConstructor Выделяет новый экземпляр объекта указанного типа без попытки вызова метода конструктора. (Устарело в платформа .NET Framework 2.0; используйте вместо него ICorDebugEval2::NewParameterizedObjectNoConstructor.)
Метод NewString Выделяет новый строковый объект с указанным содержимым.

Комментарии

Объект ICorDebugEval создается в контексте определенного потока, который используется для выполнения вычислений. Все объекты и типы, используемые в данной оценке, должны находиться в одном домене приложения. Этот домен приложения не обязательно должен совпадать с текущим доменом приложения потока. Оценки могут быть вложенными.

Операции оценки не завершатся, пока отладчик не вызовет ICorDebugController::Continue, а затем не получит обратный вызов ICorDebugManagedCallback::EvalComplete . Если необходимо использовать функцию оценки, не разрешая запуск других потоков, приостановите потоки с помощью ICorDebugController::SetAllThreadsDebugState или ICorDebugController::Stop перед вызовом ICorDebugController::Continue.

Так как пользовательский код выполняется при выполнении оценки, могут возникать любые события отладки, включая загрузки классов и точки останова. Отладчик будет получать обратные вызовы, как обычно, для этих событий. Состояние оценки будет рассматриваться как часть проверки нормального состояния программы. Цепочка стека будет цепочкой CHAIN_FUNC_EVAL (см. перечисление CorDebugStepReason и метод ICorDebugChain::GetReason ). Api полного отладчика будет по-прежнему работать в обычном режиме.

Если возникает ситуация с взаимоблокировкой или бесконечным циклом, пользовательский код может никогда не завершиться. В этом случае необходимо вызвать метод ICorDebugEval::Abort перед возобновлением работы программы.

Примечание

Этот интерфейс не поддерживает удаленные вызовы между компьютерами или между процессами.

Требования

Платформы: см. раздел Требования к системе.

Заголовок: CorDebug.idl, CorDebug.h

Библиотека: CorGuids.lib

версии платформа .NET Framework: доступно с версии 1.0.

См. также раздел