報告AvOnCom 發布 醫療法案

Note

本文專指 .NET 框架。 此規定不適用於較新的 .NET 實作,包括 .NET 6 及更新版本。

reportAvOnComRelease當執行 COM 互通且結合 Release OR ReleaseComObject 方法與原始 COM 呼叫時,因使用者引用計數錯誤而拋出異常,管理除錯助理(MDA)會被啟動。

Symptoms

存取違規與記憶體損毀。

原因

偶爾,在執行 COM 互操作及使用 Release or ReleaseComObject 方法與原始 COM 呼叫時,使用者引用計數錯誤會拋出例外。 通常,這個例外會被捨棄,因為不這麼做會導致 CLR 出現存取違規,導致 CLR 下降。 啟用此助理後,這些例外可以被偵測並回報,而非直接丟棄。

解決方法

檢查你的參考計數程式碼並尋找錯誤,同時檢查物件的原生客戶端是否有引用計數錯誤。

對運行時間的影響

有兩種模式可供選擇。 若屬性 allowAvtrue,助理會阻止執行時丟棄存取違規。 若 allowAvfalse預設值,執行時會捨棄存取違規,但會向使用者回報警告訊息,表示異常被拋棄並被丟棄。

Output

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

Configuration

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

另請參閱