【问题标题】:Creating a core dump on clr exception thrown在引发 clr 异常时创建核心转储
【发布时间】:2012-07-04 18:39:16
【问题描述】:

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

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

这可能吗?

如果无法使用 windbg,我也愿意接受其他有关如何实现此目标的建议...

【问题讨论】:

    标签: c# debugging clr windbg dump


    【解决方案1】:

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

    编辑:

    对于特定的例外情况,您可能需要 ADPlus。例如,请参阅此post

    更多编辑:

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

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

    【讨论】:

    • 谢谢,我可能没有说清楚——当我说“某种异常”时,我指的是一个特定的异常,而不是抛出任何异常时。我认为 procdump 不可能做到这一点
    • @RoyReznik ADPlus 可能是您需要的。请点击我编辑的答案中的链接。
    • ADPlus 有效,但较新版本需要的语法与您引用的帖子略有不同。我建议任何想使用它的人应该去codeproject.com/Articles/315536/…
    【解决方案2】:

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

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

    .dump /ma c:\mydump.dmp
    

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

    【讨论】:

      猜你喜欢
      • 2021-11-17
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多