ICorDebugManagedCallback2::MDANotification 方法

提供代码执行在正在调试的应用程序中 (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] 指向负责公开 MDA 信息的 ICorDebugMDA 接口的指针。

备注

MDA 是启发式警告,除了调用 ICorDebugController::Continue 以恢复正在调试的应用程序的执行外,不需要任何显式调试程序操作。

公共语言运行时 (CLR) 可以确定触发哪些 MDA,以及各节点给定的 MDA 中存在哪类数据。 因此,无需为调试程序构建任何需要特定 MDA 模式的功能。

MDA 或会进入队列,并在遇到 MDA 后不久触发。 如果运行时需要等待,直到达到触发 MDA 的安全点,而不是在遇到 MDA 时触发 MDA,则可能会发生这种情况。 这也意味着运行时或会在一组已进入队列的回叫(类似于“附加”事件操作)中触发多个 MDA。

调试程序应在从 MDANotification 回叫返回后立即释放对 ICorDebugMDA 实例的引用,以允许 CLR 回收 MDA 占用的内存。 如果触发许多 MDA,释放实例可能会提高性能。

要求

平台:请参阅系统要求

标头:CorDebug.idl、CorDebug.h

库:CorGuids.lib

.NET Framework 版本:自 2.0 起可用

请参阅