Sysinternals 出品 · 免费 · 免安装 · 开发运维必备
程序突然崩溃,重启后什么线索都没了?CPU 偶发飙到 100%,等你打开任务管理器已经恢复正常?内存一直在涨,不知道是哪个进程在泄漏?客户报障说程序"卡死",你却无法复现?ProcDump —— 微软官方的进程"黑匣子",在关键时刻帮你抓下第一手现场!
📌 软件信息
🔍 什么是 ProcDump?
ProcDump 是微软著名系统工具套件 Sysinternals 中的一款命令行进程转储工具,由 Windows 内核专家 Mark Russinovich 团队开发。
它的核心能力是在进程出现异常的瞬间,自动捕获内存转储(Dump 文件),为后续的问题分析提供完整的"犯罪现场"。你可以用 WinDbg、Visual Studio 等工具打开 Dump 文件,精确定位崩溃原因、内存泄漏、死锁等问题。
💡 什么是 Dump 文件?Dump(内存转储)是进程在某一时刻的完整内存快照,包含了变量值、调用堆栈、线程状态等所有信息,是诊断崩溃、死锁、内存泄漏最重要的证据。
✨ 核心亮点
1
CPU 飙高自动抓 Dump
设定 CPU 阈值(如 >80% 持续 5 秒),ProcDump 自动触发转储,再也不用手动"守株待兔"。
2
崩溃瞬间自动捕获
监听进程的未处理异常(-e 参数),程序崩溃的瞬间立即生成 Dump,不放过任何线索。
3
卡死进程强制转储
使用 -h 参数检测窗口无响应的"假死"进程,强制生成 Dump,定位死锁或挂起原因。
4
内存泄漏监控
通过 -m 参数设定内存提交阈值,当进程内存持续增长到指定值时自动抓 Dump,定位泄漏根源。
5
支持 Full Dump,信息完整无遗漏
-ma 参数生成完整内存转储(含堆、句柄等),用 WinDbg 分析时可还原所有变量和调用栈。
6
跨平台:Windows + Linux 双支持
ProcDump v12 已支持 Linux 系统,在 Windows 和 Linux 服务器上都能使用,统一工具体验。
📖 实战教程
⚠️ 提示:抓取进程 Dump 需要以管理员身份运行 CMD 或 PowerShell,且进程 ID 必须在运行时才能捕获。
🔹 场景一:CPU 飙高时自动抓 Dump
// CPU 超过 70% 持续 5 秒,自动抓 2 个 Full Dump
procdump 20548 -ma -c 70 -s 5 -n 2 -o D:\dumps\
// 按进程名捕获(程序名不区分大小写)
procdump -ma -c 80 -s 3 -n 3 w3wp.exe D:\dumps\
参数解释:20548 进程 ID | -ma Full Dump | -c 70 CPU >70% 触发 | -s 5 持续 5 秒 | -n 2 最多 2 个 Dump | -o 覆盖同名文件
🔹 场景二:程序崩溃时自动抓 Dump
// 监听进程异常(崩溃),触发时生成 Full Dump
procdump -e -ma 12345 D:\dumps\
// 启动程序并同时监听崩溃
procdump -e -ma -x D:\dumps\ "C:\Program Files\MyApp\app.exe"
// 捕获特定异常类型(如 Access Violation)
procdump -e -ma -f C0000005 12345 D:\dumps\
🔹 场景三:程序卡死(无响应)时抓 Dump
// 检测窗口无响应(假死),自动抓 Full Dump
procdump -h -ma 12345 D:\dumps\
// 按进程名监控窗口响应
procdump -h -ma notepad.exe D:\dumps\
🔹 场景四:内存泄漏监控
// 内存提交量超过 500MB 时抓 Dump(-m 单位 MB)
procdump -ma -m 500 -n 3 12345 D:\dumps\
// 内存持续增长,间隔 10 秒抓一次,最多 5 个
procdump -ma -m 100 -s 10 -n 5 w3wp.exe D:\dumps\
🔹 场景五:等待进程启动后自动监控
// -w:等待目标进程启动,一旦运行立即开始监控
procdump -e -ma -w myapp.exe D:\dumps\
// 适合开机启动项、服务进程的故障排查
procdump -e -ma -c 90 -s 3 -w svchost.exe D:\dumps\
📋 常用参数速查表
-ma | |
-c | |
-s | |
-n | |
-e | |
-h | |
-m | |
-w | |
-x | |
-f | |
-o | |
-u | |
-p |
🎯 适用场景
💥 应用程序崩溃排查
程序闪退、报错、异常退出,用 -e 参数在崩溃瞬间自动捕获 Dump,交给开发或运维分析根因。
🔥 CPU 飙高问题定位
服务间歇性 CPU 100%,用 -c -s -n 参数在飙高时自动抓 Dump,事后用 WinDbg 分析调用堆栈,找到热点代码。
🧊 程序卡死 / 无响应分析
GUI 程序假死、服务无响应,用 -h 参数检测并强制转储,分析死锁或阻塞的线程。
📈 内存泄漏追踪
进程内存持续增长不释放,用 -m 参数在内存到达阈值时抓 Dump,对比多个 Dump 找出泄漏对象。
🖥️ IIS / Windows 服务故障诊断
IIS 工作进程(w3wp.exe)崩溃或重启,提前部署 ProcDump 监控,崩溃时自动生成 Dump,无需人工值守。
👨💻 开发与测试阶段监控
用 -x 启动程序并监控,测试阶段一旦出现崩溃立即保留现场,大幅提升 Bug 修复效率。
🛠️ 抓到 Dump 之后用什么分析?
!analyze -v 自动分析 | |
💡 实用技巧
① 始终使用 -ma 而不是默认 Mini Dump默认的 Mini Dump 信息极少(只有线程和调用栈),-ma 生成 Full Dump 包含完整堆内存和变量值,分析效率大幅提升。
② 提前部署,不要等问题发生对于生产环境的 IIS、Windows 服务等关键进程,应在部署时就用 ProcDump 配合计划任务或启动脚本持续监控,问题发生时有现成 Dump,无需复现。
③ 注意 Dump 文件体积Full Dump 大小约等于进程的内存占用,大型服务可能达到数 GB。确保目标磁盘有足够空间,定期清理旧的 Dump 文件。
④ 用 -w 配合计划任务实现无人值守将 procdump -e -ma -w app.exe D:\dumps\ 加入 Windows 计划任务(开机启动),程序一运行就开始监控,崩溃自动抓 Dump,无需人工介入。
⑤ 搭配 WinDbg 的 !analyze -v 命令打开 WinDbg,加载 Dump 文件后输入 !analyze -v,WinDbg 会自动分析崩溃原因并给出建议,是快速定位问题的第一步。
📥 如何下载
前往微软官方直接下载:
🔗 点击下载 Procdump.zip
📎 下载链接:https://download.sysinternals.com/files/Procdump.zip
下载后解压,将 procdump.exe 放入 PATH 目录即可使用,无需安装
📝 总结
ProcDump 是一款来自微软官方的进程转储诊断工具,免费、小巧、专业、强大。 它能在 CPU 飙高、程序崩溃、进程卡死、内存泄漏的关键时刻自动捕获 Dump,为问题分析留下完整的第一手证据。无论你是开发工程师、运维人员还是系统管理员,ProcDump 都应该是你工具箱里常驻部署的利器——提前配置好,问题来临时不慌不乱!
— END —
夜雨聆风