【问题标题】:How to make my code creating dump file before crash?如何让我的代码在崩溃前创建转储文件?
【发布时间】:2012-04-10 11:00:57
【问题描述】:

我有一些 C# 和 C++ 代码(在一个项目中)。 这段代码有一些崩溃,我试图找到它。 但这种崩溃不会在任何时候重现 - 我找不到它。

我想配置代码/windows 操作系统以在崩溃时创建转储文件。

我的限制是......我对重现此崩溃的机器的访问权限有限 - 这不是开发机器..这是测试实验室机器

那么,怎么做呢? 如何更改解决方案中的属性,以便在任何崩溃时创建新的转储文件?

(目的是能够分析windbg工具中的dump)

【问题讨论】:

标签: c# .net debugging windbg


【解决方案1】:

您可以注册未处理的异常过滤器和 PInvoke MiniDumpWriteDump。执行此操作的代码示例位于 here

【讨论】:

    【解决方案2】:

    您可以在注册表中启用保存转储文件:

    1. 打开 RegEdit
    2. 导航到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows 错误报告
    3. 在 Windows 错误报告下,创建一个名为 LocalDumps 的新注册表项。

    【讨论】:

      【解决方案3】:

      我发现ProcDump 更容易使用。尝试使用 -e(在未处理的异常上创建转储)、-ma(使用完整进程内存)和 -t(在应用终止时创建转储)选项。

      【讨论】:

      • 啊,但是当应用程序崩溃时已经太晚了。毫无疑问,我也喜欢 ProcDump,但我认为这不是使用它的正确情况。
      • 您可以使用 -e 选项来处理未处理的异常。它会告诉您导致崩溃的原因。
      • 很公平,然后+1 很好。但在我看来,这应该是答案的一部分。
      猜你喜欢
      • 1970-01-01
      • 2016-08-03
      • 2010-12-05
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多