reportAvOnComRelease MDA

更新:2007 年 11 月

在执行 COM 互操作并将原始 COM 调用与 ReleaseReleaseComObject 方法一起使用时,如果由于用户引用计数错误引发了异常,则将激活 reportAvOnComRelease 托管调试助手 (MDA)。

症状

访问冲突和内存损坏。

原因

偶尔,在执行 COM 互操作并将原始 COM 调用与 ReleaseReleaseComObject 方法一起使用时,会由于用户引用计数错误而引发异常。通常会丢弃此异常,因为如果不这样做,就会在 CLR 中引发访问冲突,进而导致 CLR 中止。启用此助手后,则除了丢弃这类异常外,还可以检测并报告这类异常。

解决办法

检查您的引用计数代码并搜索是否有错误,还要检查您的对象的本机客户端是否有引用计数错误。

对运行库的影响

有两种模式可供使用: 如果 allowAv 属性为 true,则助手会阻止运行库丢弃访问冲突。如果 allowAv 为 false(这是默认设置),则运行库会丢弃访问冲突,但会向用户报告一条警告消息,指出引发了一个异常并丢弃了该异常。

输出

如果有可能,输出中包括 COM 接口指针的原始 vtable。否则,会显示一条信息性消息。

配置

<mdaConfig>
  <assistants>
    <reportAvOnComRelease allowAv="false"/>
  </assistants>
</mdaConfig>

请参见

概念

使用托管调试助手诊断错误

Interop 封送处理概述

参考

MarshalAsAttribute

其他资源

互操作性