我有一個windows服務,它間歇性地拋出一個有時會導致SQLConnection失敗的異常,而其他時間則會完全中止服務。它在客戶的網站上運行。帶SOS的Windbg,停在正確的異常處
我已經計劃使用Windbg + SOS來獲取崩潰轉儲,以便我可以在自己的閒暇時間進行調試。
但是,在我第一次嘗試時,調試器在服務遇到第一次機會異常時被暫停,該異常在代碼中被捕獲和處理(如我使用sxe clr
命令)。
幫助文件似乎暗示我使用sxd clr
而不是sxe clr
來捕獲第二個更改異常,而不是第一次機會異常。
然而,在我的測試中,sxd clr
命令正在處理生成的捕獲和處理的異常,與引發的異常(但未捕獲)完全相同,即將其記錄並忽略。
這種行爲,不停止拋出的異常,可能是因爲我在我的代碼中顯式拋出了異常,或者是否所有的clr異常都無法使用sxd
命令暫停調試器?我應該使用不同的命令嗎?
其次,由於WinDBG的不特異性識別CLR的錯誤,是可以告訴它只是在一個特定的,未處理的,異常停止(即出現InvalidOperationException)
謝謝,我會檢查出來 – johnc 2010-09-14 03:49:08
請記住,在最新版本的WinDbg中,adplus.vbs被替換爲adplus.exe。我在新版本中遇到了一些問題,因此您可能需要使用舊版本,該版本仍包含在內(重命名爲adplus_old.vbs)。 – 2010-09-14 03:53:43
很好,謝謝 – johnc 2010-09-14 04:36:42