2013-02-15 26 views
2

我已經在啓動例行下列方式登記全球的ExceptionHandlers在我的應用程序(C#,WPF,.NET4):全球exceptionHandler的不捕捉一些異常(例如StackoverflowException)

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正在顯示以下信息:

enter image description here

在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 

ENTRY2:

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 

能有什麼我這樣做,我可以處理例外(爲meanreason在出現異常的情況下獲取堆棧跟蹤分析)?

回答

2

有些異常無法捕獲,即使通過AppDomain.UnhandledException也是如此。因爲他們太噁心,不允許託管代碼繼續運行。

StackOverflowException是這樣的心臟病發作,臭名昭着,給這個網站的名字。沒有足夠的堆棧空間來執行常見的託管代碼執行任務,例如運行抖動。 ExecutionEngineException是另一個,由被銷燬的垃圾回收堆觸發,並且在.NET 4.0及更高版本中不可捕獲。

所以不,顯示結束了,WER對話框和Windows事件日誌條目就剩下了。 SO總是由一個錯誤引起的,你需要修復它。

+0

這個。這樣想吧:如果你可以捕捉堆棧溢出,你會以什麼樣的方式處理它? – JerKimball 2013-02-15 15:31:07

+0

謝謝你的解釋。我知道,這是一個錯誤 - 我正在尋找一種方法來確定錯誤發生的位置。這種崩潰是無法重現的,它只是在兩個客戶機器上不時發生,當他們點擊應用程序中的不同部分時。正因爲如此,我正在尋找一種獲取信息的方法,哪些方法涉及到stackoverflow和它發生的地方。我不會恢復應用程序 - 只有這些信息才能修復錯誤。 – BennoDual 2013-02-16 10:38:11

+0

http://stackoverflow.com/questions/4052770/deciphering-the-net-clr20r3-exception-parameters-p1-p10/4053325#4053325 – 2013-02-16 13:05:14