Condividi tramite


MDA reportAvOnComRelease

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'utilizzo 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'utilizzo del metodo Release o ReleaseComObject in combinazione con chiamate COM non elaborate. Di solito questa eccezione viene eliminata in quanto, in caso contrario, causerebbe una violazione di accesso in CLR con il conseguente arresto di quest'ultimo. Quando l'assistente in questione viene attivato, 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, nonché verificare la presenza di errori nel conteggio dei riferimenti sui client nativi dell'oggetto.

Effetto sul runtime

Sono disponibili due modalità. Se l'attributo allowAv è true, l'assistente impedisce al runtime l'eliminazione della violazione di accesso. Se invece tale attributo è 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.

Configurazione

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

Vedere anche

Riferimenti

MarshalAsAttribute

Concetti

Diagnostica degli errori tramite gli assistenti al debug gestito

Marshalling di interoperabilità

Altre risorse

Interoperabilità