有没有办法从应用程序外部找到.NET代码捕获的异常?
我发现3d party API会抛出异常并对其进行抑制(我看到perf计数器正在上升)。
但它并没有在trace中显示它(我尝试了sysinternals dbgView)。
什么工具可以显示捕获的异常?
答案 0 :(得分:2)
在这种情况下我总是转向的工具是WinDBG。下载32bit version或64bit version,具体取决于流程的位数。
由于某些原因,最新版本没有直接下载链接(仅在SDK中提供),因此请跳至“上一版本”部分并获取最新版本。
安装后加载WinDBG并执行以下操作:
.loadby sos mscorwks
(这会加载.NET调试器扩展)sxe clr
(告诉调试器中断托管异常)g
(GO!)!pe
以查看异常详细信息。 !clrstack
命令可用于查看托管堆栈或尝试!dumpstack
包含本机调用。
如果调试器因您不关心的异常而停止,只需再次点击“g”,直到找到想要查看的异常。
!help
命令将显示所有可用的.NET扩展,如果您想深入挖掘,我强烈推荐Tess Ferrandez's blog。
答案 1 :(得分:1)
您是否可以使用Visual Studio中的远程调试器附加到进程并将其配置为在抛出异常时中断?