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

Should I write my own crash dump via separate process or rely on WER?

本文关键字:转储 崩溃 WER 依赖 自己的 单独 过程 我应该      更新时间:2023-10-16

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

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

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

  • 添加(也适用于32位应用程序。不要使用SysWow64节点)HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumps密钥(可能是应用程序特定的子密钥...LocalDumpsMyApplication.exe)
  • DumpType设置为2
  • 根据需要调整其他设置

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

这似乎给了我一个简单的演示应用程序相当可靠的崩溃转储。

或者,我可以自己编写垃圾堆——适当地使用看门狗程序和所有程序

我使用MiniDumpWriteDump来编写转储,并通过看门狗进程(如本文所述)来完成此操作,以最大限度地降低失败风险。

问题

那么,哪种方法更好呢?考虑到,当我自己做这件事时,我谨慎地将我在崩溃处理程序中所做的事情保持在最低限度,我想知道WER方法是否同样可靠,或者WER方法在过程中是否做了更多的事情可能会失败。有什么想法/经验吗?

除了自己动手,您还可以查看Google Breakpad,它是一个用于生成和处理崩溃转储的库和工具集。