有没有办法找到从应用程序外部.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