ProcDump是微软官方轻量级工具,用于捕获程序崩溃、卡死或CPU异常时的内存转储;需管理员运行并接受EULA,路径须无中文空格,支持-e监听异常、-ma生成完整dump、-c/-s按CPU阈值触发。

当程序突然崩溃退出、没有留下日志或错误提示时,需要立即获取其崩溃瞬间的内存状态来定位根因,ProcDump正是为此设计的轻量级命令行工具。
下载并准备ProcDump
访问微软官方 Sysinternals 页面 https://learn.microsoft.com/en-us/sysinternals/downloads/procdump ,直接下载 procdump64.exe(64位系统)或 procdump.exe(32位系统)。不要从第三方网站下载,避免签名失效导致UAC拦截或杀软误报。
将下载好的文件放入一个无中文、无空格的路径,例如 C:\tools\procdump\。这一步很关键——如果路径含空格或中文,后续命令执行时可能因参数解析失败而静默退出,不生成dump也不报错。
右键以管理员身份运行一次该exe文件,让它自动弹出EULA协议页并按Y确认接受。此后命令中可加 【-accepteula】 参数跳过交互,否则脚本会卡住等待人工输入。
监控指定程序崩溃并自动生成dump
假设你要监控的程序是 WorkBuddy.exe,且希望在它发生未处理异常(如空指针、访问冲突)时立刻捕获完整用户模式转储:
打开命令提示符(CMD)或 PowerShell,进入 ProcDump 所在目录,执行:
procdump64.exe -accepteula -e -ma "C:\Program Files\WorkBuddy\WorkBuddy.exe" "C:\dumps\WorkBuddy_crash.dmp"
其中 【-e】 表示监听未处理异常,【-ma】 表示生成包含完整内存的“完整转储”(含堆),这对.NET或C++程序分析至关重要;若只用 -ma 而漏掉 -e,程序正常退出时也会触发dump,干扰判断。
命令运行后窗口保持打开状态,ProcDump会挂起自身进程并开始注入目标进程。一旦 WorkBuddy 崩溃,控制台会输出类似 "Process has terminated. Dump 1 written" 的提示,同时生成对应 .dmp 文件。
针对已知PID强制抓取实时dump
当程序尚未崩溃但已明显卡死、CPU占用异常高,或你想在某个操作前主动留存快照时,可用PID方式手动触发:
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
第一步:打开任务管理器 → “详细信息”选项卡 → 找到目标进程 → 右键 → “属性” → 查看“PID”值,记下数字(如 12840);
第二步:在命令行中执行:procdump64.exe -accepteula -ma 12840 "C:\dumps\WorkBuddy_frozen.dmp";
第三步:等待几秒,看到 "Dump 1 written" 即完成。
注意:此操作会短暂暂停目标进程,对正在响应用户输入的GUI程序可能造成界面冻结感,但不会终止它。
按CPU阈值自动抓取(适用于间歇性性能问题)
方法一:监控CPU持续飙高3秒以上时抓dump
procdump64.exe -accepteula -c 90 -s 3 -ma "C:\Program Files\WorkBuddy\WorkBuddy.exe" "C:\dumps\WorkBuddy_cpu.dmp"
该命令表示:当 WorkBuddy 进程的CPU使用率连续3秒 ≥90%,立即生成完整dump。适合复现困难的“卡顿几秒后恢复”类问题。
方法二:仅监控单核CPU峰值(多核机器慎用)
加上 -u 参数即可,例如 procdump64.exe -accepteula -c 95 -s 2 -u -ma 12840 "C:\dumps\cpu_singlecore.dmp"。不加 -u 时ProcDump默认统计所有逻辑核心总和,加了则只看单个核心——若目标进程被调度到某颗核心上狂打满,这个参数能更精准捕获。










