【问题标题】:Create dmp files in release build在发布版本中创建 dmp 文件
【发布时间】:2011-06-18 14:00:40
【问题描述】:

在发布版本中程序崩溃时如何创建 dmp 文件?我想我应该触发异常,但我不知道如何

【问题讨论】:

  • 什么平台? C++ 标准不包括故障转储,为此您需要特定于操作系统的机制。

标签: c++ windows crash-dumps


【解决方案1】:

在 Windows 上,您可以使用 Debug Helper API 将小型转储文件写入您选择的任何位置。此文件不需要发送给 Microsoft。

http://msdn.microsoft.com/en-us/library/ms680369(v=vs.85).aspx

正如其他人所提到的,如果没有来自正确构建的 PDB 文件,转储文件将毫无用处。您可能需要考虑使用 Microsoft 的符号服务器来索引和管理 PDB 文件。

您可能还想使用 Breakpad 直接向您报告客户端错误:

http://code.google.com/p/google-breakpad/

【讨论】:

  • 如何触发所有异常?我看到使用 MiniDumpWriteDump 我应该使用 try-except 块检查代码
  • 除非代码可以从异常中恢复,否则不需要使用 try 块。看SetUnhandledExceptionFilter注册自定义方法写dump文件here
【解决方案2】:

Windows automatically generates a minidump 每当程序 throws 出现未处理的异常(即您没有 catch 块的异常)。 请务必构建 pdb 文件(假设您使用 Visual Studio),以便您可以调试 dmp 文件。

【讨论】:

  • 它是否为在客户端机器上以发布版本运行的应用程序构建小型转储?
  • 是的,但是默认情况下不会为发布版本创建 pdb 文件
  • 无论如何很难回答你的问题 - 我看不到你用什么构建,什么平台,客户端上的安装等等。\
  • 请注意,您不会轻易获得 .dmp 文件,它们会直接发送给 Microsoft。您必须注册才能访问通过 WER 收集的转储。
  • 我认为他需要该文件,客户会直接使用日志将其提交给他——而不是通过 MS——但问题非常模糊。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多