Partager via


Assistant Débogage managé gcUnmanagedToManaged

L'Assistant Débogage managé (MDA, Managed Debugging Assistant) gcUnmanagedToManaged déclenche une opération garbage collection chaque fois qu'un thread effectue la transition du code non managé au code managé.

Symptômes

Une application exécutant des composants utilisateur non managés à l'aide de COM et des appels de code non managé provoque une violation d'accès non déterministe dans le CLR.

Cause

Si une application exécute des composants utilisateur non managés, il se peut que ces composants aient endommagé le tas obtenu à l'issue d'une opération garbage collection. Cela provoque une violation d'accès dans le CLR lorsque le garbage collector tente de parcourir le graphique d'objets.

Solution

L'activation de cet assistant réduit la durée entre le moment où le composant non managé endommage le tas obtenu à l'issue d'une opération garbage collection et le moment de la violation d'accès en obligeant l'exécution une opération garbage collection avant toute transition managée.

Effet sur le runtime

Provoque une opération garbage collection chaque fois qu'un thread effectue la transition du code non managé au code managé.

Sortie

Ce MDA ne produit aucune sortie.

Configuration

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

Voir aussi

Référence

Assistant Débogage managé gcManagedToUnmanaged

MarshalAsAttribute

Concepts

Diagnostic d'erreurs avec les Assistants de débogage managés

Marshaling d'interopérabilité

Autres ressources

Interopérabilité