【问题标题】:How to create minidump for my process when it crashes?崩溃时如何为我的进程创建小型转储?
【发布时间】:2010-12-05 13:19:44
【问题描述】:

我无法通过更改系统设置从我的进程中创建小型转储。所以我的问题是 :

  • 当用户进程崩溃时系统会为它创建一个小型转储

    如果是,我需要配置哪个设置

  • 或者我必须以编程方式创建小型转储。

  • 小型转储在调查崩溃时的效果如何

我使用的是 Windows XP、C++、VC6

【问题讨论】:

  • 你总是可以结合 try-catch 和 fstream 来制作你自己的 minidump。

标签: c++ windows debugging minidump


【解决方案1】:

您需要以编程方式创建一个小型转储(有一个例外,请参阅下一个链接)。 CodeProject 有一个不错的article on MiniDumps。基本上,你想使用dbghelp.dll,并使用函数MiniDumpWriteDump()(见MSDN on MiniDumpWriteDump)。

此类转储的效果在很大程度上取决于应用程序。有时,对于优化的二进制文件,它们实际上是无用的。此外,如果没有经验,堆/堆栈损坏错误会导致您误入歧途。

但是,如果优化器对你来说不是太难,那么转储会帮助一大类错误,即所有具有堆栈跟踪+本地值的错误used variables很有用,即许多纯虚函数调用的东西(即错误的销毁顺序),访问冲突(未初始化的访问或缺少NULL检查)等。

顺便说一句,如果您的维护策略允许,请将您的应用程序从 VC6 移植到可接受的系统,例如 VC8 或 9。您会帮自己一个大忙。

【讨论】:

    【解决方案2】:

    感谢大家查看和回复,特别感谢 gimpf,我在互联网和 msdn 上进行了谷歌搜索。

    我在 debugInfo.com 上找到了一篇很棒的文章,值得一读:

    effective minidumps

    【讨论】:

      【解决方案3】:

      我们在 Firefox 中使用Google Breakpad,尽管这至少需要 Visual C++ 2003。另一个好处是它还支持 OS X 和 Linux。

      【讨论】:

        【解决方案4】:

        我最终在 Windows 上使用了 CrashRpt(要求我将整个代码库和工具链从 MinGW 移动到本机 Microsoft C/C++ 编译器),并在 Linux 上使用 google-breakpad。

        【讨论】:

          【解决方案5】:

          如果您有几块钱,AQtrace 可能值得一看。这具有在调试器内部发生崩溃的许多优点,同时在远程最终用户计算机上运行。

          【讨论】:

            【解决方案6】:

            我意识到这是一个老问题,但就系统设置(OP 的第一个点)而言,您可以启用设置以使用 Windows 错误报告的内置自动崩溃转储生成。这记录在这里:https://docs.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps。由于这需要提升,因此最好手动设置(如果您是管理员)或在应用程序的安装时设置。如果您的应用不需要提升,我不建议在运行时设置它。

            基本上,您在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\<app_name.exe> 下创建一个新密钥并在那里自定义选项。这样做的好处是崩溃转储是自动生成的,您可以控制它们的存储位置、类型和包含的信息,以及保留多少转储。

            这可能是在 Windows 上生成和管理用户模式故障转储的最简单方法。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-06-24
              • 1970-01-01
              • 1970-01-01
              • 2019-06-28
              • 1970-01-01
              • 2015-12-05
              • 1970-01-01
              相关资源
              最近更新 更多