有沒有辦法找到從應用程序外部.NET代碼捕獲的異常?如何在生產機器上嗅探捕獲的.NET異常?
我發現3D派對API拋出一個異常,並抑制它(我看到perf計數器上升)。
但它不顯示它在跟蹤(我試過sysinternals dbgView)。
什麼工具可以顯示捕獲的異常?
有沒有辦法找到從應用程序外部.NET代碼捕獲的異常?如何在生產機器上嗅探捕獲的.NET異常?
我發現3D派對API拋出一個異常,並抑制它(我看到perf計數器上升)。
但它不顯示它在跟蹤(我試過sysinternals dbgView)。
什麼工具可以顯示捕獲的異常?
在這種情況下,我總是轉向的工具是WinDBG。根據進程的位數,下載32bit version或64bit version。
由於一些蹩腳的原因,最新版本沒有直接下載鏈接(僅在SDK中可用),因此請跳至「以前的版本」部分並獲取最新的版本。安裝並執行以下操作後
負載的WinDBG:
.loadby sos mscorwks
(此加載.NET調試器擴展)sxe clr
(告訴調試到b reak上託管異常)g
(GO!)!pe
以查看異常詳細信息。!clrstack
命令有助於查看託管堆棧或嘗試!dumpstack
以包含本地調用。
如果調試程序在您不關心的異常處停止,只需再次點擊'g',直到找到想要查看的異常。
!help
命令將顯示所有可用的.NET擴展,如果您想深入挖掘,我強烈建議使用Tess Ferrandez's blog。
您可以使用visual studio中的遠程調試器附加進程,並在發生異常時將其配置爲中斷嗎?
我不確定它會中斷。它是發佈代碼,異常會在3d party API代碼中引發。 – 2010-06-22 23:28:33
FYI ...一些正常的方法(如Response.End)會拋出異常,因此perfmon中遞增的異常計數並不總是很差。 – David 2010-06-23 03:23:37
我沒有明白你的觀點。我同意這並不壞。我只需要知道它是什麼,並將它推到API開發人員面前,因爲他們不幫助。而這個例外使得整個應用程序,我花了5個星期無用.....呃..解釋? – 2010-06-23 09:19:07