今天生成转储文件我使用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可以生成转储,但只有在系统崩溃时才会生成。
当一个应用程序或服务崩溃时,是否存在用于生成转储的等效键或Windows设置?
它将由QA服务使用,我希望它可以减少侵入性。运行procdump看起来就像一个添加的工具,一个插入的工具。
答案 0 :(得分:2)
确实,您需要从MSDN创建此密钥:
HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
然后填充所需的设置:
DumpFolder
- 相当于用户文件夹的minidump文件夹,即存储转储的位置。由于这是每个用户,用户需要对该位置的写访问权。DumpType
- 是执行完整内存转储还是仅执行小型转储。在此文件夹中,这些设置适用于崩溃的任何应用程序。如果要匹配特定进程,请创建一个包含进程名称的子文件夹,例如myapphasabug.exe
并在那里应用自定义设置,覆盖默认设置。
也许这比您需要的更多,但codeproject minidumper example是一个非常有用的起点,可以为应用程序添加自助转储和支持代码,如果您希望自己的应用程序自动化"有一个转储,请发送给支持"过程
另外,考虑打开application verifier进行更严格的测试 - 就像驱动程序验证程序一样,它可以在您发货之前发现问题并且非常方便。