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