共用方式為


reportAvOnComRelease MDA

當執行 COM Interop 和使用 ReleaseReleaseComObject 方法來結合未經處理的 COM 呼叫,卻由於使用者參考計數 (Reference Counting) 錯誤而擲回例外狀況時,reportAvOnComRelease Managed 偵錯助理 (MDA) 就會啟動。

症狀

存取違規和記憶體損毀。

原因

由於在執行 COM Interop 和使用 ReleaseReleaseComObject 方法來結合未經處理的 COM 呼叫時,所發生的使用者參考計數錯誤,偶爾便會擲回例外狀況。 由於不捨棄這個例外狀況就會造成 CLR 中的存取違規,並使 CLR 終止,所以通常都會捨棄這個例外狀況。 在啟用這個助理時,即可偵測和報告這種例外狀況,而非只是捨棄。

解決方式

檢查您的參考計數程式碼和搜尋錯誤,並檢查物件的原生用戶端以找出參考計數錯誤。

對執行階段的影響

有兩種模式可供使用。 如果 allowAv 屬性為 true,這個助理就會防止執行階段捨棄存取違規。 如果 allowAv 是 false (預設值),執行階段就會捨棄存取違規,不過會有警告訊息向使用者報告,表示已經擲回和捨棄例外狀況。

Output

如果可能的話,輸出就會包含 COM 介面指標的原始 vtable。 否則,就會顯示一項資訊訊息。

組態

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

請參閱

參考

MarshalAsAttribute

概念

診斷 Managed 偵錯助理的錯誤

Interop 封送處理

其他資源

互通性