关于调试 API

更新: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::SetIPICorDebugNativeFrame::SetIP)在 64 位操作系统上有额外的限制。其余的功能在所有处理器上都相同,从而允许有特定于处理器的数据表示形式(指针大小、寄存器上下文等等)。

  • 基于 Win9x 的操作系统上不支持“编辑并继续”及混合模式调试。除了在个别功能的文档中说明的少许特定例外情况外,其余的功能在所有操作系统上应相同。

请参见

其他资源

.NET Framework 中的调试

CLR 调试概述

调试(非托管 API 参考)