Интерфейс 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.