reportAvOnComRelease MDA
注意
本文特定于 .NET Framework。 它不适用于 .NET 的较新版本实现,包括 .NET 6 及更高版本。
在执行 COM 互操作并将原始 COM 调用与 reportAvOnComRelease
或 Release 方法一起使用时,如果由于用户引用计数错误引发了异常,则将激活 ReleaseComObject 托管调试助手 (MDA)。
症状
访问冲突和内存损坏。
原因
偶尔,在执行 COM 互操作并将原始 COM 调用与 Release 或 ReleaseComObject 方法一起使用时,会由于用户引用计数错误而引发异常。 通常会丢弃此异常,因为如果不这样做,将会在 CLR 中引发访问冲突,进而导致 CLR 中止。 启用此助手后,除了丢弃这类异常外,还可以检测并报告这类异常。
解决方法
检查你的引用计数代码并搜索是否存在错误,同时检查对象的本机客户端是否存在引用计数错误。
对运行时的影响
两种模式皆可用。 如果 allowAv
特性为 true
,则助手会阻止运行时丢弃访问冲突。 如果 allowAv
为 false
(这是默认设置),则运行时会丢弃访问冲突,但会向用户报告一条警告消息,指出引发了一个异常并丢弃了该异常。
输出
如果可能,输出会 包括 COM 接口指针的原始 vtable。 否则,会显示一条信息性消息。
Configuration
<mdaConfig>
<assistants>
<reportAvOnComRelease />
</assistants>
</mdaConfig>