Share via


gcUnmanagedToManaged-MDA

Aktualisiert: November 2007

Der gcUnmanagedToManaged-MDA (Managed Debugging Assistant, Assistent für verwaltetes Debuggen) veranlasst bei jedem Übergang eines Threads von nicht verwaltetem zu verwaltetem Code eine Garbage Collection.

Symptome

Eine Anwendung, die über COM und Plattformaufrufe nicht verwaltete Benutzerkomponenten ausführt, verursacht eine nichtdeterministische Zugriffsverletzung in der CLR.

Ursache

Wenn eine Anwendung nicht verwaltete Benutzerkomponenten ausführt, dann haben diese Komponenten möglicherweise den Heap der Garbage Collection beschädigt. Dies verursacht eine Zugriffsverletzung in der CLR, wenn der Garbage Collector versucht, das Objektdiagramm durchzugehen.

Lösung

Durch das Aktivieren dieses Assistenten wird der Zeitraum zwischen dem Beschädigen des Heap der Garbage Collection durch die nicht verwaltete Komponente und dem Auftreten der Zugriffsverletzung verkürzt, indem vor jedem Übergang in verwalteten Code eine Garbage Collection erzwungen wird.

Auswirkungen auf die Laufzeit

Bei jedem Übergang eines Threads von nicht verwaltetem zu verwaltetem Code wird eine Garbage Collection veranlasst.

Ausgabe

Dieser MDA erzeugt keine Ausgabe.

Konfiguration

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

Siehe auch

Konzepte

Diagnostizieren von Fehlern mit Assistenten für verwaltetes Debuggen

Übersicht über das Interop-Marshalling

Referenz

gcManagedToUnmanaged-MDA

MarshalAsAttribute

Weitere Ressourcen

Interoperabilität