Wpf 全局异常处理程序未捕获某些异常(例如StackoverflowException)
我已通过以下方式在启动例程的应用程序(C#,WPF,.NET4)中注册了全局异常处理程序:Wpf 全局异常处理程序未捕获某些异常(例如StackoverflowException),wpf,c#-4.0,.net-4.0,exception-handling,unhandled-exception,Wpf,C# 4.0,.net 4.0,Exception Handling,Unhandled Exception,我已通过以下方式在启动例程的应用程序(C#,WPF,.NET4)中注册了全局异常处理程序: AppDomain.CurrentDomain.UnhandledException += (sender, args) => HandleException(args.ExceptionObject as Exception); Application.Current.DispatcherUnhandledException += (sender, args) => { HandleE
AppDomain.CurrentDomain.UnhandledException += (sender, args) => HandleException(args.ExceptionObject as Exception);
Application.Current.DispatcherUnhandledException += (sender, args) => {
HandleException(args.Exception);
args.Handled = true;
};
其中HandleException()记录异常并显示包含一些附加信息的MessageBox
现在,我的应用程序在一些客户机器上不时出现崩溃,在这些机器上没有调用HandleException()。Windows正在显示以下消息:
在WindowsEventLog中,我得到以下条目:
入口1:
Name der fehlerhaften Anwendung: proconact.exe, Version: 1.0.0.1365, Zeitstempel: 0x511531df
Name des fehlerhaften Moduls: PresentationFramework.ni.dll, Version: 4.0.30319.588, Zeitstempel: 0x504db27d
Ausnahmecode: 0xc00000fd
Fehleroffset: 0x002ef05b
ID des fehlerhaften Prozesses: 0x1bec
Startzeit der fehlerhaften Anwendung: 0x01ce0b5dce4030a6
Pfad der fehlerhaften Anwendung: C:\Program Files (x86)\proconact_sck\proconact.exe
Pfad des fehlerhaften Moduls: C:\windows\assembly\NativeImages_v4.0.30319_32\PresentationFramewo#\c627e9b7f10b01db43645284e601f255\PresentationFramework.ni.dll
Berichtskennung: d8d69f94-777a-11e2-b4b0-b4b52f2aad4f
条目2:
Fehlerbucket 3482664247, Typ 5
Ereignisname: CLR20r3
Antwort: Nicht verfügbar
CAB-Datei-ID: 0
Problemsignatur:
P1: proconact.exe
P2: 1.0.0.1365
P3: 511531df
P4: PresentationFramework
P5: 4.0.0.0
P6: 504db27d
P7: 329d
P8: 0
P9: System.StackOverflowException
P10:
Angefügte Dateien:
d:\Temp\WER6E9F.tmp.WERInternalMetadata.xml
Diese Dateien befinden sich möglicherweise hier:
C:\Users\roger\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_proconact.exe_b0fabce1f86d1f843de5b5b4692a3e8ecd928_2c77f03d
Analysesymbol:
Es wird erneut nach einer Lösung gesucht: 0
Berichts-ID: d8d69f94-777a-11e2-b4b0-b4b52f2aad4f
Berichtstatus: 0
我可以做些什么来处理异常(为了在异常发生时获取stacktrace进行分析)?有些异常无法捕获,甚至AppDomain.UnhandledException也无法捕获。因为它们太令人讨厌,不允许托管代码继续运行 StackOverflowException就是这样的心脏病发作,臭名昭著,足以命名这个网站。没有足够的堆栈空间来执行常见的托管代码执行任务,比如运行抖动。ExecutionEngineeException是另一个异常,由被破坏的垃圾收集堆触发,在.NET4.0及更高版本中不可修补
所以,不,节目结束了,WER对话框和Windows事件日志条目就剩下了。因此,它总是由错误引起的,您需要修复它。这一点。请这样想:如果您可以捕获堆栈溢出,您将以什么可能的方式处理它?谢谢您的解释。我知道这是一个bug——我正在寻找一种方法来确定bug发生的位置。崩溃是不可复制的,只有在两台客户的机器上不时单击应用程序中的不同部分时才会发生崩溃。因此,我正在搜索一个方法来获取信息,哪些方法涉及stackoverflow以及它发生在哪里。我不会恢复应用程序-只有这些信息来修复错误。