【发布时间】:2015-05-08 10:42:10
【问题描述】:
有没有一种简单的方法可以为崩溃的应用程序生成内存转储?
我有一种情况,客户收到了导致崩溃的代码,因为代码本身没有用于中止回溯生成的信号处理程序我想知道是否有一种简单的方法来告诉 Windows 生成内存崩溃应用程序的转储。
理想的解决方案不涉及调试工具的安装(或代码修改),但如果这是不可能的,那么了解这将非常有帮助。
【问题讨论】:
标签: windows crash crash-dumps
有没有一种简单的方法可以为崩溃的应用程序生成内存转储?
我有一种情况,客户收到了导致崩溃的代码,因为代码本身没有用于中止回溯生成的信号处理程序我想知道是否有一种简单的方法来告诉 Windows 生成内存崩溃应用程序的转储。
理想的解决方案不涉及调试工具的安装(或代码修改),但如果这是不可能的,那么了解这将非常有帮助。
【问题讨论】:
标签: windows crash crash-dumps
2)另一种生成用户模式转储的方法是添加以下注册表项
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows 错误报告 >\LocalDumps\application.exe application.exe 应替换为扫描仪下的应用程序名称。
在此键下可以添加以下值
转储文件夹
转储文件的存储路径。如果您不使用默认路径,请确保该文件夹包含允许崩溃进程将数据写入文件夹的 ACL。 对于服务崩溃,转储会根据使用的服务帐户写入服务特定的配置文件文件夹。例如,系统服务的配置文件文件夹是 %WINDIR%\System32\Config\SystemProfile。对于网络和本地服务,文件夹是 %WINDIR%\ServiceProfiles。
转储计数
文件夹中转储文件的最大数量。当超过最大值时,文件夹中最旧的转储文件将被新的转储文件替换。
转储类型
指定以下转储类型之一: 0:自定义转储 1:迷你转储 2:完全转储
CustomDumpFlags
要使用的自定义转储选项。此值仅在 DumpType 设置为 0 时使用。 这些选项是 MINIDUMP_TYPE 枚举值的按位组合。
【讨论】:
我自己找到了答案,msdn在以下位置指定了调试寄存器:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows 错误\LocalDumps
需要设置以下值:
可通过here 获取大量文档。
如果寄存器不存在,可以手动创建它们,windows 会选择它。
这也是可能的,无需通过以下步骤直接修改注册表:
【讨论】: