reportAvOnComRelease MDA

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

症状

访问冲突和内存损坏。

原因

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

解决方法

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

对运行时的影响

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

Output

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

配置

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

请参见

参考

MarshalAsAttribute

概念

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

互操作封送处理

其他资源

互操作性