在抛出的clr异常上创建核心转储

时间:2012-07-04 09:15:29

标签: c# debugging clr windbg dump

每次特定 clr异常为THROWN时,我都会尝试使用windbg创建转储。

我知道!soe,但我不希望执行停止,我只是想让它创建转储。

这可能吗?

如果使用windbg是不可能的,我也会接受有关如何实现这一目标的其他建议......

2 个答案:

答案 0 :(得分:2)

试试procdump。也许使用选项“-e 1”来捕获第一次机会异常的转储。

编辑:

对于特定的例外情况,您可能需要ADPlus。例如,见post

更多编辑:

没有ADPlus也是可能的:在Windbg中 - >调试 - >事件过滤器,将CLR例外设置为忽略 - 未处理。单击“命令”按钮,然后输入以下内容(当然使用您的特定异常类型):

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

答案 1 :(得分:1)

在WinDbg中,'Debug> “事件过滤器”,找到要为其执行命令的特定异常或添加编号的异常。

然后单击“命令”并输入:

.dump /ma c:\mydump.dmp

在命令框中,您甚至可以输入第二个命令进行第二次机会异常处理,这将在触发异常事件时写入完整的小型转储。