提供代码执行在正在调试的应用程序中遇到托管调试助手(MDA)的通知。
Syntax
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]指向公开 MDA 信息的 ICorDebugMDA 接口的指针。
注解
MDA 是启发式警告,除了调用 ICorDebugController::Continue 继续继续执行正在调试的应用程序之外,不需要任何显式调试器作。
公共语言运行时(CLR)可以确定触发哪些 MDA,以及在任何时间点的任何给定 MDA 中的数据。 因此,调试器不应生成任何需要特定 MDA 模式的功能。
MDA 遇到 MDA 后不久,MDA 可能会排队并触发。 如果运行时需要等到它达到触发 MDA 的安全点,而不是在遇到 MDA 时触发 MDA,则可能会发生这种情况。 这也意味着运行时可能会在一组排队回调(类似于“附加”事件作)中触发大量 MDA。
调试器应在从回调返回后立即释放对 ICorDebugMDA 实例的 MDANotification 引用,以允许 CLR 回收 MDA 使用的内存。 如果触发了许多 MDA,则释放实例可能会提高性能。
要求
平台: 请参阅 .NET 支持的作系统。
页眉: CorDebug.idl、CorDebug.h
图书馆: CorGuids.lib
.NET 版本: 自 .NET Framework 2.0 起可用