3

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

我可以设置 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编写转储文件,并通过看门狗进程(如此处、此处所述)来执行操作,以最大程度地降低失败的风险。

问题

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

4

1 回答 1

0

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

于 2012-11-28T10:36:07.383 回答