更新:2007 年 11 月
利用公共语言运行库 (CLR) 调试 API,工具供应商可以编写调试器来调试运行于 CLR 环境中的应用程序。要调试的代码可为 CLR 支持的任何代码种类。
CLR 调试 API 主要是使用非托管代码实现的。因此,调试 API 呈现为一组 COM 接口。该 API 由 CLR 实现的 COM 对象和接口的集合以及必须由调试器实现的 COM 回调接口的集合组成。由于这些调试接口均基于 COM,因此可以轻松地扩展调试器程序,通过使用分布式 COM (DCOM) 实现远程调试。
API 类别
调试 API 包括以下三组接口,这三组接口通常都由 CLR 调试器使用,并均以非托管代码的形式实现:
支持对 CLR 应用程序进行调试的接口。
允许访问符号调试信息的接口,该信息通常存储在程序数据库 (PDB) 文件中。
支持在计算机上查询进程和应用程序域的接口。
调试 API 依赖于另外两组接口:
用于处理静态程序信息(比如类和方法类型信息)检查的元数据 API。
用于为托管代码调试器支持源级别调试的符号存储区 API。
调试接口也可以划分为下表中所示的功能类别。
API 类别 |
说明 |
---|---|
注册 |
调试器调用以向 CLR 注册并在发生特定事件时请求通知的接口。 |
通知 |
CLR 用于将各种事件通知调试器并返回请求的信息的回调接口。这些接口必须由调试器实现。 |
断点 |
调试器调用以检索有关断点的信息的接口。 |
执行 |
调试器调用以控制调试对象执行和访问调用堆栈的接口。 |
信息 |
调试器调用以获取有关调试对象的信息的接口。 |
枚举 |
调试器调用以枚举对象的接口。 |
修改 |
调试器调用以修改所调试代码的接口。 |
支持的环境
CLR 支持的所有处理器和操作系统上都提供了 CLR 调试功能,但以下情况例外:
64 位操作系统上不支持“编辑并继续”及混合模式调试。SetIP 方法(ICorDebugILFrame::SetIP 和 ICorDebugNativeFrame::SetIP)在 64 位操作系统上有额外的限制。其余的功能在所有处理器上都相同,从而允许有特定于处理器的数据表示形式(指针大小、寄存器上下文等等)。
基于 Win9x 的操作系统上不支持“编辑并继续”及混合模式调试。除了在个别功能的文档中说明的少许特定例外情况外,其余的功能在所有操作系统上应相同。