reportAvOnComRelease MDA

注意

本文特定于 .NET Framework。 它不适用于 .NET 的较新版本实现,包括 .NET 6 及更高版本。

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

症状

访问冲突和内存损坏。

原因

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

解决方法

检查你的引用计数代码并搜索是否存在错误,同时检查对象的本机客户端是否存在引用计数错误。

对运行时的影响

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

输出

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

Configuration

<mdaConfig>
  <assistants>
    <reportAvOnComRelease />
  </assistants>
</mdaConfig>

请参阅