提供通知,说明代码执行在正在调试的应用程序中遇到了托管调试助手 (MDA)。
HRESULT MDANotification(
[in] ICorDebugController *pController,
[in] ICorDebugThread *pThread,
[in] ICorDebugMDA *pMDA
);
参数
pController
[in] 一个指向 ICorDebugController 接口的指针,该接口公开出现 MDA 的进程或应用程序域。调试器不应就控制器是进程还是应用程序域做出任何假设,但它可以始终通过查询该接口来加以确定。
pThread
[in] 一个指向 ICorDebugThread 接口的指针,该接口公开发生调试事件的托管线程。如果 MDA 出现在非托管线程上,则 pThread 的值将为 Null。
必须从 MDA 对象本身中获取操作系统 (OS) 线程 ID。
pMDA
[in] 一个指向 ICorDebugMDA 接口的指针,该接口公开 MDA 信息。
备注
MDA 是一种试探警告,除了调用 ICorDebugController::Continue 来继续执行正在调试的应用程序外,它不需要任何显式调试器操作。
公共语言运行时 (CLR) 可以确定要激发哪些 MDA 以及任意给定的 MDA 在任意时间包含哪些数据。 因此,调试器不应生成任何需要特定 MDA 模式的功能。
如果遇到 MDA,可以稍后对 MDA 排队并加以激发。 如果运行时需要等到一个安全点再激发 MDA 而不是在遇到 MDA 时便加以激发,则可能发生此情况。 这还意味着,运行时可以在一组排队的回调中激发多个 MDA(类似于“附加”事件操作)。
当调试器从 MDANotification 回调中返回后,应立即释放对 ICorDebugMDA 实例的引用,以使 CLR 可以回收由 MDA 使用的内存。 如果要激发多个 MDA,则释放实例可以提高性能。
要求
**平台:**请参见 .NET Framework 系统要求。
头文件: CorDebug.idl、CorDebug.h
**库:**CorGuids.lib
**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0