最近有台公用笔记本经常应用崩溃,应用本身会使用笔记本的独立显卡,从日志看是应用程序调用内存异常,需要抓取应用程序的dump文件。
Windows 应用程序 Dump 抓取通用方案
适用于 任何 Windows 应用程序(不限名称、不限类型),包括:
桌面应用(EXE)
全屏程序 / 游戏
GPU 程序(OpenGL / DirectX)
服务进程
卡死但不崩溃的程序
本方案包含两大部分:
LocalDumps(系统自动生成 Dump)
procdump(微软官方工具,手动/自动抓取 Dump)
均为 不蓝屏 的应用级 Dump 抓取方式。
🟦 方案一:LocalDumps(应用崩溃时自动生成 Dump)
1. 以管理员权限打开注册表
右键 开始菜单 → Windows PowerShell(管理员) 输入:
regedit
2. 注册表路径(通用)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\<YourApp.exe>
将 <YourApp.exe> 替换为你的应用程序名称,例如:
LocalDumps\MyApp.exe
LocalDumps\Game.exe
LocalDumps\ServiceHost.exe
若 LocalDumps 或 <YourApp.exe> 不存在,请手动创建。
3. 推荐配置值(通用)
在 <YourApp.exe> 项下新建以下值:
| 值名称 | 类型 | 数据 | 说明 |
|---|---|---|---|
| DumpFolder | 可扩展字符串值 | D:\CrashDumps |
推荐放在非系统盘 |
| DumpType | DWORD | 2 |
Full Dump(最完整) |
| DumpCount | DWORD | 10 |
最多保留 10 个 |
若空间有限,可将 DumpType 设为
1(Mini Dump)。
4. 创建 Dump 文件夹并设置权限(非常重要)
在 D 盘(或 C 盘)创建文件夹:
CrashDumps右键 → 属性 → 安全 → 编辑
添加
Everyone→ 勾选 完全控制
若不设置权限,Dump 文件可能无法写入。
5. 重启电脑(必须执行)
LocalDumps 配置在 Win10 上需要重启才能生效。
🟩 方案二:procdump(不蓝屏、可手动/自动抓取 · 强烈推荐)
微软官方 Sysinternals 工具,适用于:
全屏程序
卡死但不崩溃
想立即抓 Dump
想自动等待崩溃
1. 下载 procdump
微软官方: https://learn.microsoft.com/sysinternals/downloads/procdump
2. 自动等待崩溃(通用)
在启动应用程序之前运行:
procdump.exe -e -ma -w <YourApp.exe> D:\CrashDumps
含义:
-e:程序崩溃时自动抓 Dump-ma:Full Dump-w:等待进程启动
3. 手动立即抓 Dump(不需要崩溃)
先在任务管理器找到 PID,然后执行:
procdump.exe -ma <PID> D:\CrashDumps
适合:
程序卡死但没崩溃
想立即验证 Dump 是否能生成
4. 优点(通用)
不蓝屏
全屏可用
不依赖 Scroll Lock
Dump 质量最高
可自动、可手动
适用于任何应用程序
🟦 方案三:任务管理器创建 Dump(全屏也能用)
适用于:
程序卡死
想快速抓一次 Dump
不想用命令行
步骤
按 Ctrl + Shift + Esc(强制弹出任务管理器)
找到
<YourApp.exe>右键 → 创建转储文件
Dump 会生成在:
%LOCALAPPDATA%\Temp
最佳实践(通用)
| 需求 | 最佳方案 |
|---|---|
| 程序崩溃时自动生成 Dump | LocalDumps(注册表) |
| 不蓝屏、可手动抓取 | procdump(最推荐) |
| 程序卡死但没崩溃 | procdump 或任务管理器 |
| 全屏运行、无法切出 | procdump(提前运行) |
🟦 一键导入 LocalDumps(通用 .reg 文件)
保存为 App_Dump.reg → 右键 → 以管理员身份运行:
reg
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\<YourApp.exe>]
"DumpFolder"="D:\\CrashDumps"
"DumpType"=dword:00000002
"DumpCount"=dword:0000000a
将
<YourApp.exe>替换为你的应用名称。
🟩 Dump 验证方法(通用)
方法 1:让程序崩溃(LocalDumps 自动生成)
检查:
D:\CrashDumps
方法 2:procdump 手动抓取(不需要崩溃)
procdump.exe -ma <PID> D:\CrashDumps
方法 3:任务管理器创建 Dump
%LOCALAPPDATA%\Temp