windows - 自动生成转储文件,是否有注册表设置?

标签 windows crash-dumps

今天为了生成转储文件,我使用 SysInternals 工具 ProcDump,并在 cmd 窗口中运行这样的命令:

:loop

net stop "MyService"
net start "MyService"

echo Monitoring Access violations
procdump.exe -e -g -ma MyApplication.exe MyDumpFile.dmp > log.txt

goto loop

但是有另一种方法可以直接告诉 Windows 在一个应用程序崩溃时创建转储吗?

例如,我找到了这个注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl 这使得 Windows 能够生成转储,但仅限于系统崩溃时。

是否有等效的 key 或 Windows 设置用于在一个应用程序或服务崩溃时生成转储?

它将由 QA 服务使用,我希望它的侵入性尽可能小。运行 procdump 对他们来说就像一个附加工具,一个插入工具。

最佳答案

确实有,来自MSDN您需要创建此 key :

HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps

然后填充所需的设置:

  • DumpFolder - 相当于用户文件夹的小型转储文件夹,即存储转储的位置。由于这是针对每个用户的,因此用户将需要对该位置的写入权限。
  • DumpType - 是否执行完整内存转储,或仅执行小型转储。

在此文件夹中,设置适用于任何崩溃的应用程序。如果要匹配特定进程,请使用进程名称创建一个子文件夹,例如myapphasabug.exe 并在那里应用自定义设置,这会覆盖默认设置。

也许这超出了您的需要,但是codeproject minidumper example如果您希望您的应用程序自动执行“有转储,请将其发送给支持”过程,那么这是向应用程序添加“自转储”/支持代码的非常有用的起点。

另外,请考虑打开 application verifier对于更严格的测试 - 就像驱动程序验证程序一样,它可以在发货之前发现问题,并且非常方便。

关于windows - 自动生成转储文件,是否有注册表设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25283082/

相关文章:

windows - gnuwin32 inetutils 包去了哪里?

windows - 如何在 Windows 上批量推送多个文件夹

python - 使用 python 检查文件夹

windows - 分析BSOD WHEA_UNCORRECTABLE_ERROR WIN8驱动

qt - 解析 qt 崩溃转储

python - 如何在windows下打开磁盘读取低级数据?

windows - 将 WSL 添加到 Windows 防火墙

c++ - 为什么 google breakpad 不能处理所有崩溃?我该如何调试这些案例?

c++ - 在进程外调用时 MiniDumpWriteDump 中的访问冲突

linux - Linux 中的核心转储