Wie kann ich eine nicht behandelte Ausnahme in verwaltetem Code debuggen, wenn sie von COM aus aufgerufen wird?

8

Ich habe eine C # .NET-Komponente, die von einer COM-Out-of-Process-ActiveX-Exe aufgerufen wird.

Ich kann den Debugger in Visual Studio 2005 starten, der auf meiner COM-Exe läuft, die meine .NET-Komponente aufruft. Breakpoints funktionieren, brechen aber bei einer nicht behandelten "Object reference set" -Ausnahme nicht. Ich habe folgendes vergebens versucht:

  • hat alle CLR-Ausnahmen im VS-Ausnahmen-Dialogfeld überprüft
  • enabled "Brechen, wenn Ausnahmen AppDomain oder verwaltete / native Grenzen überschreiten"
  • hat das Debuggen von nicht verwaltetem Code auf meinem Projekt aktiviert
  • deaktiviert "Just My Code" Debugging
tukushan 23.05.2011, 00:32
quelle

2 Antworten

3

Normalerweise füge ich einen Aufruf von System.Diagnostics.Debugger.Launch; am Eingangspunkt meines verwalteten Codes hinzu. Dies startet den Debugger, wenn das Programm noch nicht aktiv im Debug-Modus ist. Beachten Sie, dass Sie diese Zeile entfernen müssen, nachdem Sie das Debuggen abgeschlossen haben, da Sie den Aufruf des Debuggers in der Release-Version nicht weiterführen möchten.

    
Drew 23.05.2011, 02:29
quelle
1

Anstatt Ihre Programmierung mit F5 auszuführen, können Sie das nicht verwaltete Programm ausführen und dann daran anhängen:

Für Visual Studio 2005:

  • Ausführen (nicht debuggen) des nicht verwalteten Projekts von Visual Studio mit Ctrl+F5
  • Öffnen Sie das Dialogfeld "An den Prozess anhängen": Debug - & gt; An Prozess anhängen ...
  • Klicken Sie auf die Schaltfläche Anhängen an: : Auswählen ...
  • Wählen Sie: Debug diese Code-Typen:
  • Überprüfen Sie diese Elemente: Verwaltet , Nativ
  • Klicken Sie auf OK
  • Wählen Sie Ihren Prozess aus Verfügbare Prozesse
  • Klicken Sie auf Anhängen

Dies sollte sowohl das verwaltete als auch das nicht verwaltete Debugging in einem nicht verwalteten Prozess ermöglichen. Sie können jetzt Breakpoints setzen oder erste Ausnahmen im verwalteten Code abfangen, vorausgesetzt, Sie haben Symbole.

    
Rick Sladkey 23.05.2011 01:36
quelle