C#/WPF -App, das eine ObjektdisposedException wirft; Warum kann ich keine Stacktrace fangen oder bekommen?
-
26-10-2019 - |
Frage
Ich habe eine C# WPF-UI-App, und wenn ich sie schließe, erhalte ich immer einen Windows-Anwendungsdialog ("Uidemo ist auf ein Problem gestoßen und muss schließen.").
Der Fehlerbericht zeigt an, dass es sich um ein System handelt. Das ist in Ordnung, ich verstehe diesen Teil.
Und ich würde es gerne beheben. Ich kann einfach keinen Stacktrace auf dem Bastard bekommen.
Diese Ausnahme entkämpft alle folgenden folgenden:
- Mein Dispatcherununhandledexception -Handler
- Mein Versuch/Fang um den gesamten Inhalt des Ausgangsereignisses handlungsverwaltet umgibt
- Klicken Sie auf "Debugg" im Windows-Anwendungsdialog
- Das Ausführen der App in Visualstudios Debug -Modus scheint zu funktionieren, aber seltsamerweise scheint es nicht so zu stürzen, also keine Spur
Alles, was ich tun muss, ist der arkane Inhalt des Fehlerberichts, den Windows an MS senden soll. Diese hexidezimalen Speichermagnungen sind nicht wirklich so nützlich.
Weiß jemand, wie ich diese verdammte Spur bekommen kann?
Lösung
Eine andere Option wäre, diese besondere Ausnahme zu fangen und einen Crash -Dump zu erzeugen, der in Windbg über PSSCOR2 oder SOS analysiert werden könnte. Auf diese Weise können Sie die Stapelspur bewerten.
Debugdiag: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=24370
Debugging CLR mit Windbg: http://www.codeproject.com/kb/debug/windbg_part1.aspx
Andere Tipps
Ein Konsolenfenster zeigt alle Ausnahmen mit einer vollständigen Stapelspur. So fügen Sie Ihrer WPF -Anwendung ein Konsolenfenster hinzu:
- Gehen Sie die Projekteigenschaften Ihrer WPF -Anwendung.
- Wählen Sie die erste Registerkarte "erste (Seite),
Application
. - Unter
Output type
auswählenConsole Application
. - Erstellen und führen Sie Ihre App aus. Es sollte mit einem zusätzlichen Konsolenfenster beginnen. Wenn es abstürzt, sollten Sie die Ausnahme und Stapelspur darin sehen.
Versuchen Sie, einen Versuch/Fang in Ihre Hauptmethode zu machen, nicht um den Ausgangshandler. In WPF ist die Hauptmethode nicht immer einfach zu finden- siehe hier, wie man sie findet: http://joyfulwpf.blogspot.com/2009/05/where-is-main-method-in-my-wpf.html