2
我有一個.NET Windows服務似乎由於C00000005(訪問衝突 - 根據Watson博士)而崩潰。當我將VS調試器附加到VS調試器上時(無論是否使用符號構建它),VS調試器只會在服務崩潰時停止,而不是停下來讓我有機會做任何調查。如何調試崩潰的Windows服務?
- 這是預料之中,還是我做錯了什麼?
- 將使用WinDbg讓我做更多的實時(顯然,WinDbg讓我做崩潰轉儲分析)?
謝謝!
我有一個.NET Windows服務似乎由於C00000005(訪問衝突 - 根據Watson博士)而崩潰。當我將VS調試器附加到VS調試器上時(無論是否使用符號構建它),VS調試器只會在服務崩潰時停止,而不是停下來讓我有機會做任何調查。如何調試崩潰的Windows服務?
謝謝!
您應該進入異常窗口(調試 - >異常)並在Win32異常中爲該異常選擇Thrown複選框。此外,請注意您正在調試本機代碼(請參閱附加到處理窗口附加組合框中)
@Christopher:我的回答對您有幫助嗎? – Ikaso 2010-05-10 08:49:38
對不起,問題原來是一個COM DLL在加入它所產生的所有線程之前,它自己卸載了它,當其中一個睡眠線程醒來時,它試圖執行不在內存中的代碼,最終導致遞歸異常處理程序調用溢出堆棧。 底線:除非你知道你在做什麼,否則不要在COM DLL中使用OmniORB。 – Chris 2010-06-25 17:31:05