gcUnmanagedToManaged MDA

The gcUnmanagedToManaged Assistente de depuração gerenciada (MDA) faz com que um lixo coleção sempre que um thread transita de não gerenciado para código gerenciado.

Sintomas

Um aplicativo chamar componentes do usuário não gerenciado em execução usando a plataforma e COM está causando uma violação de acesso não determinísticas do CLR.

Causa

Se um aplicativo estiver executando componentes do usuário não gerenciado, em seguida, esses componentes podem ter corrompido o heap coletado ao lixo.Isso causa uma violação de acesso no CLR, quando o coletor de lixo tentar movimentar o gráfico do objeto.

Resolução

Habilitar este assistente reduz o time entre quando o componente não gerenciado corrompe a pilha de coleta de lixo e quando a violação de acesso ocorre, forçando um lixo coleção antes que cada transição gerenciada.

Efeito sobre o tempo de execução

Faz com que uma coleta de lixo sempre que um thread transições de não gerenciado para código gerenciado.

Saída

Este MDA não produz nenhuma saída.

Configuração

<mdaConfig>
  <assistants>
    <gcUnmanagedToManaged/>
  </assistants>
</mdaConfig>

Consulte também

Conceitos

Diagnosticar erros com assistentes de depuração gerenciadas

Visão geral do empacotamento interop

Referência

gcManagedToUnmanaged MDA

MarshalAsAttribute

Outros recursos

Interoperabilidade