ICorDebugEval 接口

提供使调试器能够在所调试代码的上下文中执行代码的方法。

Methods

方法 Description
Abort 方法 中止此 ICorDebugEval 对象当前正在执行的计算。
CallFunction 方法 设置对指定函数的调用。 (已过时;请改用 ICorDebugEval2::CallParameterizedFunction 。)
CreateValue 方法 获取指向指定类型的“ICorDebugValue”对象的接口指针,其初始值为零或 null。 (已过时;请改用 ICorDebugEval2::CreateValueForType 。)
GetResult 方法 获取指向包含计算结果的接口指针 ICorDebugValue
GetThread 方法 获取指向执行或将执行此计算的“ICorDebugThread”的接口指针。
IsActive 方法 获取一个值,该值指示此 ICorDebugEval 对象当前是否正在执行。
NewArray 方法 分配指定元素类型和维度的新数组。 (已过时;请改用 ICorDebugEval2::NewParameterizedArray 。)
NewObject 方法 分配新的对象实例并调用指定的构造函数方法。 (已过时;请改用 ICorDebugEval2::NewParameterizedObject 。)
NewObjectNoConstructor 方法 分配指定类型的新对象实例,而不尝试调用构造函数方法。 (已过时;请改用 ICorDebugEval2::NewParameterizedObjectNoConstructor 。)
NewString 方法 分配具有指定内容的新字符串对象。

注解

对象 ICorDebugEval 是在用于执行计算的特定线程的上下文中创建的。 给定评估中使用的所有对象和类型必须驻留在同一应用程序域中。 该应用程序域不需要与线程的当前应用程序域相同。 计算可以嵌套。

在调试器调用 ICorDebugController::Continue 之前,评估的作不会完成,然后接收 ICorDebugManagedCallback::EvalComplete 回调。 如果需要使用评估功能而不允许其他线程运行,请在调用 ICorDebugController::Continue 之前使用 ICorDebugController::SetAllThreadsDebugStateICorDebugController::Stop 挂起线程。

由于评估正在进行时用户代码正在运行,因此可能发生任何调试事件,包括类加载和断点。 调试器将接收这些事件的回调(正常)。 评估状态将被视为正常程序状态检查的一部分。 堆栈链将是一个 CHAIN_FUNC_EVAL 链(请参阅“CorDebugStepReason”枚举和 ICorDebugChain::GetReason 方法)。 完整的调试器 API 将继续正常运行。

如果出现死锁或无限循环情况,则用户代码可能永远不会完成。 在这种情况下,必须在恢复程序之前调用 ICorDebugEval::Abort

注释

此接口不支持远程调用,无论是跨计算机还是跨进程。

要求

平台: 请参阅 .NET 支持的作系统

页眉: CorDebug.idl、CorDebug.h

图书馆: CorGuids.lib

.NET 版本: 自 .NET Framework 1.0 起可用