我应该通过单独的流程编写自己的崩溃转储还是依赖WER?

时间:2012-11-28 09:25:53

标签: c++ windows visual-c++ crash-dumps windows-error-reporting

目前我的信息是(并且让我们保持上下文到Windows-7,因为WER在Win-XP上的工作方式不同),我有两种方法可以为我的应用程序获取完整的内存崩溃转储: / p>

我可以设置WER来生成应用程序的本地完整内存转储

信息在这里:http://msdn.microsoft.com/en-us/library/bb787181%28v=vs.85%29.aspx

  • 添加(也适用于32位应用。使用SysWow64节点)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps键(可能是应用特定的子键...LocalDumps\MyApplication.exe
  • DumpType设为2。
  • 根据需要调整其他设置

注意:由于我们的应用程序是自定义部署的,因此设置此注册表值不是问题。

这似乎通过简单的演示应用程序为我提供了非常可靠的故障转储。

或者,我可以自己编写转储文件 - 正确使用看门狗进程和所有

我使用MiniDumpWriteDump来编写转储,我是通过监督程序(如herehere所述)执行此操作,以最大程度地降低失败风险。

问题

那么,哪种方法更好?鉴于此,当我自己这样做时,我谨慎地将我在崩溃处理程序中所做的事情保持在最低限度,我想知道WER方法是否可靠,或者WER方法是否在进程中处理更多事情 可能会失败。任何想法/经验?

1 个答案:

答案 0 :(得分:0)

作为自己动手的替代方法,您可以查看Google Breakpad,它是用于生成和处理故障转储的库和工具集。