我有一個Windows服務應用程序,WinXPe,有時因錯誤而失敗,並顯示一個消息框,用戶下運行:如何完全捕獲所有異常/錯誤
「的指令‘’ 在「00000000」中所引用的內存。該 內存不能爲「read」。按OK 退出程序
如果用戶點擊「確定」服務正在重新啓動。
我試圖捕獲所有未處理的異常,並在處理程序中註冊一個事件處理程序AppDomain.CurrentDomain.UnhandledException
我登錄異常詳細信息並退出應用程序。 但我上面提到的錯誤不是從「UnhandledException」處理的。
該應用程序嚴重多線程,使用System.Threading.Timer和System.Threading.Thread。它使用一些第三方庫,其中一個庫使用本地互操作,我沒有本地庫的來源。
我試圖用附加的調試器指出錯誤,但錯誤不顯示;) 應用程序必須在發生錯誤前幾天運行。
我需要一種方法來處理這樣的錯誤。
謝謝
馬蒂是正確的,這不是一個託管的異常,所以你平時的調試技術將無法正常工作。你使用P/Invoke來調用任何本地方法嗎?您是否使用任何以非託管代碼編寫的第三方庫?我們真的需要更多細節才能解決這個問題。如果您想自己嘗試調試問題,則必須啓用本地代碼調試。 – 2011-05-07 09:20:54
我沒有辦法修復本地庫中的任何東西。我沒有消息來源。它是基於PC的PLC「TwinCat」的一個組件。必須有一些辦法來處理這個:( – chriszero 2011-05-07 09:30:26
我想[我的選擇](http:// stackoverflow。com/questions/5920154/how-to-catch-absolutely-all-exceptions-errors/5920184#5920184)應該可以正常工作** [使用單獨的AppDomain](http://msdn.microsoft.com/en-us/庫/ system.appdomain.load.aspx)**。對於絕對隔離,請使用[.NET Remoting](http://msdn.microsoft.com/zh-cn/library/kwdt6w2k(v = vs.71).aspx)從單獨的進程使用本機庫。另一個明顯的道路是向[庫創建者/維護者]報告一個錯誤(http://www.beckhoff.com/english/support/default.htm)_ – sehe 2011-05-07 10:01:31