MDA reportAvOnComRelease
Observação
Este artigo é específico para aplicativos .NET Framework. Ele não se aplica a implementações mais recentes do .NET, incluindo o .NET 6 e versões posteriores.
O MDA (Assistente para Depuração Gerenciada) do reportAvOnComRelease
é ativado quando as exceções são lançadas por causa da contagem de erros pela referência do usuário durante a realização da interoperabilidade COM e do uso do método Release ou ReleaseComObject combinado com chamadas COM brutas.
Sintomas
Violações de acesso e corrupção de memória.
Causa
Às vezes, uma exceção é lançada por causa da contagem de erros pela referência do usuário durante a realização da interoperabilidade COM e do uso do método Release ou ReleaseComObject combinado com chamadas COM brutas. Normalmente, essa exceção é descartada porque deixar de fazer isso causaria uma violação de acesso no CLR, desativando-o. Quando esse assistente é habilitado, essas exceções podem ser detectadas e relatadas em vez de ser simplesmente descartadas.
Resolução
Examine o código de contagem de referência e procure erros, também examine os clientes nativos do objeto em busca de erros de contagem de referência.
Efeito sobre o runtime
Há dois modos disponíveis. Se o atributo allowAv
for true
, o assistente evitará que o runtime descarte a violação de acesso. Se allowAv
for false
(o padrão), o runtime descartará a violação de acesso, mas uma mensagem de aviso será relatada ao usuário para indicar que uma exceção foi lançada e descartada.
Saída
Se possível, a saída contém a vtable original do ponteiro da interface COM. Do contrário, é exibida uma mensagem informativa.
Configuração
<mdaConfig>
<assistants>
<reportAvOnComRelease />
</assistants>
</mdaConfig>