乐于分享
好东西不私藏

[工具软件] 程序崩溃没留下痕迹?CPU 飙高抓不到现场?微软神器 ProcDump 帮你一键捕获!

[工具软件] 程序崩溃没留下痕迹?CPU 飙高抓不到现场?微软神器 ProcDump 帮你一键捕获!

Sysinternals 出品 · 免费 · 免安装 · 开发运维必备

程序突然崩溃,重启后什么线索都没了?CPU 偶发飙到 100%,等你打开任务管理器已经恢复正常?内存一直在涨,不知道是哪个进程在泄漏?客户报障说程序"卡死",你却无法复现?ProcDump —— 微软官方的进程"黑匣子",在关键时刻帮你抓下第一手现场!

📌 软件信息

软件名称
ProcDump
当前版本
v12.0
开发商
Microsoft(Sysinternals 套件)
软件大小
仅几百 KB,免安装
系统支持
Windows 7 / 8 / 10 / 11 / Server(亦支持 Linux)
授权方式
完全免费
官方网站
Microsoft Learn

🔍 什么是 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
生成 Full Dump(包含完整内存、堆、句柄信息)
-c
CPU 阈值百分比(超过该值触发 Dump)
-s
触发阈值的持续秒数(避免瞬间抖动误触发)
-n
最多生成 Dump 文件的数量
-e
捕获未处理异常(程序崩溃时触发)
-h
检测窗口无响应(程序卡死/假死时触发)
-m
内存提交阈值(MB),超过时触发
-w
等待进程启动后再开始监控
-x
启动指定程序并同时监控
-f
过滤特定异常代码(如 C0000005 访问违例)
-o
覆盖已有的同名 Dump 文件
-u
CPU 阈值按单核计算(而非全局)
-p
监控指定性能计数器(如 I/O、线程数等)

🎯 适用场景

💥 应用程序崩溃排查

程序闪退、报错、异常退出,用 -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 之后用什么分析?

工具
适用场景
WinDbg(推荐)
微软官方调试器,功能最全面,可分析调用栈、内存、句柄、死锁等,支持 !analyze -v 自动分析
Visual Studio
开发人员友好,直接打开 Dump 文件可查看调用栈和变量,适合 C#/.NET 项目
Process Explorer
Sysinternals 同门工具,可直接右键进程"Create Dump",与 ProcDump 互为补充
DebugDiag
微软出品的专用 Dump 分析工具,提供自动分析报告,适合 IIS/ASP.NET 故障

💡 实用技巧

① 始终使用 -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 —