2012-07-04 39 views
3

我試圖在每次特定 clr異常是THROWN時使用windbg創建轉儲。在拋出的clr異常處創建核心轉儲

我知道!soe,但我不希望執行停止,我只是希望它創建一個轉儲。

這可能嗎?

如果這是不可能的使用WinDbg中,我也願意就如何實現這一目標的其他建議...

回答

2

嘗試procdump。也許使用選項「-e 1」來捕獲首次機會異常的轉儲。

編輯:

對於特定的例外情況,您可能需要ADPlus。例如,請參閱此post

更多編輯:

也可以在沒有ADPlus的:在WinDbg中 - >調試 - >事件過濾器,設置CLR例外忽略 - 不處理。單擊命令按鈕,然後輸入以下內容(根據您的特定異常類型的課程):

!soe System.ArgumentNullException 1;.if(@$t1==0) {g} .else {.dump /ma /u d:\ANE.dmp} 
+0

謝謝,我可能沒有讓自己清楚 - 當我說'某種異常'時,我的意思是一個特定的異常,而不是當任何異常被拋出時。我不認爲這是可能的procdump –

+0

@RoyReznik ADPlus可能是你所需要的。請按照我編輯的答案中的鏈接。 –

+0

ADPlus可以工作,但是更新的版本需要與您引用的帖子稍微不同的語法。我建議誰想要使用它應該去http://www.codeproject.com/Articles/315536​​/Adplus-handling-managed-exceptions –

1

在WinDbg中,「調試>事件過濾器」,找到您要爲執行命令的specifc異常或添加編號例外。

然後單擊「命令」,然後輸入:

.dump /ma c:\mydump.dmp 
在命令框中

,你甚至可以輸入第二次機會異常處理的第二個命令,當異常事件是該會寫一個完整的小型轉儲觸發。