在clr异常抛出时创建核心转储文件

3
我试图在 特定 的 clr 异常被抛出时使用 windbg 创建 dump。我知道 !soe,但我不想停止执行,我只想创建一个 dump。这是否可能?如果不能使用 windbg,我也愿意听取其他建议如何实现...
2个回答

2

尝试使用 procdump。可以使用选项“-e 1”在第一次机会异常时捕获转储。

编辑:

对于特定的异常,您可能需要使用ADPlus。例如,请参阅此文章

更多编辑:

还可以不使用ADPlus:在Windbg中 -> 调试 -> 事件筛选器中,将CLR异常设置为被忽略 - 未处理。单击“Commands”按钮,然后输入以下内容(当然要使用特定的异常类型):

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

谢谢,我可能没有表达清楚 - 当我说“某种异常”时,我指的是特定的异常,而不是任何异常被抛出时。我认为这在procdump中是不可能的。 - Roy Reznik
@RoyReznik ADPlus可能是你需要的。请按照我编辑后的回答中的链接。 - Ilian
ADPlus已经可以使用,但是新版本需要与你所参考的文章提到的有点不同的语法。我建议谁要使用它应该去http://www.codeproject.com/Articles/315536/Adplus-handling-managed-exceptions。 - Roy Reznik

1
在WinDbg中,选择“调试 > 事件筛选器”,找到您想要执行命令或添加编号异常的特定异常。
然后点击“命令”并输入:
.dump /ma c:\mydump.dmp

在命令框中,您甚至可以输入第二个命令来进行第二次异常处理,并在触发异常事件时编写完整的迷你转储。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接