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::Continue 之前使用 ICorDebugController::SetAllThreadsDebugState 或 ICorDebugController::Stop 暂停线程。
由于在评估过程中用户代码正在运行,因此可能会发生任何调试事件,包括类加载和断点事件。 调试器将如常接收这些事件的回调。 评估状态将被视为正常程序检查状态的一部分。 堆栈链将是一个 CHAIN_FUNC_EVAL
链(请参阅“CorDebugStepReason”枚举和 ICorDebugChain::GetReason 方法)。 完整的调试器 API 将继续如常运行。
如果出现死锁或无限循环,用户代码可能永远不会完成。 在这种情况下,必须在恢复程序之前调用 ICorDebugEval::Abort。
备注
此接口不支持跨计算机或跨进程远程调用。
要求
平台:请参阅系统要求。
标头:CorDebug.idl、CorDebug.h
库:CorGuids.lib
.NET Framework 版本:自 1.0 起可用