MDA reportAvOnComRelease
Nota
Questo articolo è specifico per .NET Framework. Non si applica alle implementazioni più recenti di .NET, incluse .NET 6 e versioni successive.
L'assistente al debug gestito reportAvOnComRelease
viene attivato quando vengono generate eccezioni a causa di errori nel conteggio dei riferimenti utente durante l'esecuzione dell'interoperabilità COM e l'uso del metodo Release o ReleaseComObject in combinazione con chiamate COM non elaborate.
Sintomi
Violazioni di accesso e danneggiamento della memoria.
Causa
Occasionalmente viene generata un'eccezione a causa di errori nel conteggio dei riferimenti utente durante l'esecuzione dell'interoperabilità COM e l'uso del metodo Release o ReleaseComObject in combinazione con chiamate COM non elaborate. Di solito questa eccezione viene eliminata in quanto, in caso contrario, si verificherebbe una violazione di accesso in CLR con il conseguente arresto di quest'ultimo. Quando l'assistente è abilitato, le eccezioni di questo tipo possono essere rilevate e segnalate anziché semplicemente eliminate.
Risoluzione
Esaminare il codice del conteggio dei riferimenti e cercare gli errori e verificare la presenza di errori nel conteggio dei riferimenti sui client nativi dell'oggetto.
Effetto sull'ambiente di esecuzione
Sono disponibili due modalità. Se l'attributo allowAv
è true
, l'assistente impedisce al runtime l'eliminazione della violazione di accesso. Se invece l'attributo allowAv
è false
, impostazione predefinita, il runtime elimina la violazione di accesso ma l'utente riceve un messaggio di avviso nel quale è indicato che un'eccezione è stata generata ed eliminata.
Output
Se possibile, l'output contiene il vtable originale del puntatore a interfaccia COM. In caso contrario, viene visualizzato un messaggio informativo.
Impostazione
<mdaConfig>
<assistants>
<reportAvOnComRelease />
</assistants>
</mdaConfig>