在 Windows 程序崩溃时生成转储文件

当程序出现无响应、闪退或异常退出时,生成系统转储文件(.dmp)有助于我们快速定位并解决问题。
请根据实际情况选择以下方式之一:

一、通过任务管理器(程序尚未退出)

适用场景:程序已崩溃但仍停留在屏幕上(例如弹出错误窗口)。

打开任务管理器,右键点击对应进程,选择“创建转储文件”。
等待进度条完成后,系统会提示文件保存路径(通常位于 %temp% 目录下)。
请找到该 .dmp 文件,压缩后发送给我们。

注意:必须在程序崩溃时生成,程序正常运行时生成没有意义。

二、修改注册表(程序直接退出)

如果程序崩溃时没有弹窗,而是直接退出,可以通过修改注册表,让系统在崩溃时自动生成转储文件

注册表路径示例:
增加注册表项(如果没有的话):

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps

添加或修改以下注册表值:

  • DumpCount(REG_DWORD):10,表示每个程序最多保留多少个 dump 文件。
  • DumpFolder(REG_EXPAND_SZ):转储文件保存路径,例如:%LOCALAPPDATA%\CrashDumps
  • DumpType(REG_DWORD):1
    可选值:0 = 自定义转储;1 = 小型转储(Mini dump);2 = 完整转储(Full dump)

您也可以右键点击系统【开始】按钮,在弹出的菜单中选择“终端(管理员)”,然后在打开的 PowerShell 窗口中执行下面的命令,即可快速创建这些注册表项:

$regPath = "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps"
if (-not (Test-Path $regPath)) { New-Item -Path $regPath -Force | Out-Null }
New-ItemProperty -Path $regPath -Name "DumpFolder" -Value "%LOCALAPPDATA%\CrashDumps" -PropertyType "ExpandString" -Force | Out-Null
New-ItemProperty -Path $regPath -Name "DumpCount" -Value 10 -PropertyType DWord -Force | Out-Null
New-ItemProperty -Path $regPath -Name "DumpType" -Value 1 -PropertyType DWord -Force | Out-Null

这样当程序再次崩溃时,系统会自动在指定目录中生成 .dmp 文件。
请进入 %LOCALAPPDATA%\CrashDumps,将最新的转储文件压缩后发送给我们。

三、排查完毕后如何恢复

问题解决后,为避免长期生成大文件占用磁盘空间,可在 PowerShell(管理员)中执行以下命令关闭自动转储功能:

Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" -Recurse -Force