共用方式為


reportAvOnComRelease MDA

注意

本文專屬於 .NET Framework。 它不適用於較新的 .NET 實作,包括 .NET 6 和更新版本。

如果在執行 COM Interop 並使用與原始 COM 呼叫組合的 reportAvOnComReleaseRelease 方法時,因為使用者參考計數錯誤而擲回例外狀況,就會啟用 ReleaseComObject Managed 偵錯助理 (MDA)。

徵兆

存取違規與記憶體損毀。

原因

有時候,在執行 COM Interop 並使用與原始 COM 呼叫組合的 ReleaseReleaseComObject 方法時,會因為使用者參考計數錯誤而擲回例外狀況。 通常會捨棄此例外狀況,因為如果不這麼做,就會導致 CLR 發生存取違規,而降低效能。 如果啟用此助理,就會偵測並提報這類例外狀況,而不是直接捨棄。

解決方法

檢查您的參考計數程式碼,並搜尋錯誤,另外也要檢查物件的原生用戶端,查看是否有參考計數錯誤。

對執行階段的影響

有兩種模式可用。 如果 allowAv 屬性為 true,該助理會防止執行階段捨棄存取違規。 如果 allowAvfalse (預設值),則執行階段會捨棄存取違規,但是會向使用者提報警告訊息,指出已擲回並捨棄例外狀況。

輸出

如果可能,輸出會包含 COM 介面指標的原始 vtable。 否則,就會顯示告知性訊息。

組態

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

另請參閱