Frage

Ich habe eine ungehandelte Ausnahme, die dazu führt, dass das Dialogfeld "Ausnahme -Assistent" angezeigt wird.

Wenn ich auf Details anzeigen klicke ... enthält die Ausnahme selbst einige Werte im benutzerdefinierten Objektmodell, die im Eigenschaftsnetz nicht bewertet werden, aber ich weiß, dass ich es im unmittelbaren Fenster bewerten kann. (In diesem Fall lässt mich das Eigentumsnetz nicht in eine Sammlung einbohren, aber es kann andere Fälle geben.)

Ohne den Code zu ändern, um einen Try -Block hinzuzufügen, Wie kann ich in das unmittelbare Fenster gehen und Ausdrücke auf die ungehandelte Ausnahme bewerten?

Die Antwort wird wahrscheinlich eine Magie sein, die ich noch nicht weiß?

etwas, mit dem System.Diagnostics.StackFrame oder wer weiß. Etwas Kluges.

Es gibt eine Möglichkeit, mit dem Debugger -Thread zum Navigieren zu navigieren, aber das ist ziemlich kompliziert. Wenn Sie das nehmen und es mit einer Wrapper einfach machen können, die möglicherweise eine Lösung ist.

War es hilfreich?

Lösung

Haben Sie versucht, den Debugger zu brechen, wenn die Ausnahme ausgelöst wird, anstatt nur dann, wenn er nicht gehandhabt ist?

Gehen Sie dazu zum Hauptmenü VS2010 und wählen Sie das Menü "Debug" als nächstes wählen Sie "Ausnahmen".

Das wird einen Dialog wie:Debug - loading= Exceptions.. menu">

Wählen Sie die geworfene Spalte

Wenn Ihre Ausnahme nun ausgelöst wird und Sie in der Lage sein sollten, Ihre lokalen Variablen im unmittelbaren Fenster zu bewerten.

Auf der Registerkarte Einheimischer kann ich die $ -Ence -Variable sehen:Local variables contains $exception

Ich kann die Variable "$ Exception" im unmittelbaren Fenster verwenden:Immediate Window accessing $exception

Aktualisieren: Auch für das einfache Umschalten des Ausnahmebehandlungs empfehle ich die Verwendung der Verwendung des Ausnahmebrecher Visual Studio -Erweiterung, Sie können die Ausnahmebehandlung aus der Werkzeugleiste ein- und ausschalten, anstatt in das Debug -Menü zu bohren.

Andere Tipps

Ich weiß nichts über Visual Studio 2010, aber in Visual Studio 2012, wenn eine unberechtigte Ausnahme eintritt, wird sie in der gezeigt Locals Fenster mit dem Namen $exception.

Es gibt eine Immobilie, die im Immobiliennetz nicht bewertet wird

Wenn die Eigenschaft nicht bewertet werden kann, wird Ihnen der Debugger nicht helfen wie du gesehen hast; Daher würde das unmittelbare Fenster einfach dasselbe tun.

Ich hatte eine ungültige Eigenschaft, so dass sie eine Ausnahme in VS2010 ausgelöst hatte und den Debugger zum Absturz brachte, als ich versuchte, sie zu bewerten. Nulls, die aus den Immobilien zurückgegeben wurden, waren nicht nett zum Debugger.

Ich empfehle, dass Sie gehen old school zu diesem Thema und setzen Trace.Write Innerhalb der Eigenschaft und anderswo und überwachen Sie stattdessen die Schreibberichte im Ausgabefenster.

Wie man in Visual C# verfolgt und debuggte

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top