首页/系统/Windows 运维速查/抓取进程转储(dump)做崩溃分析

抓取进程转储(dump)做崩溃分析

进程卡死或崩溃时保留现场:任务管理器一键创建转储,或用 ProcDump/comsvcs 抓取,分析交给 WinDbg。

Windows 运维速查系统更新于 2026-10-13

命令是干什么的

进程卡死或崩溃时,现场一旦消失就很难复现;转储把进程的内存与线程状态落盘,供事后用调试器分析。Windows 上最省事的是任务管理器右键创建转储,需要触发式或批量抓取时用 Sysinternals 的 ProcDump,系统内置的 comsvcs.dll 也能在无外部工具时完成抓取。

抓完怎么看

转储本身不给结论,分析要用 WinDbg 或 WinDbg Preview:加载后执行 !analyze -v 得到异常码、故障模块与调用栈,再看托管侧栈需借助 CLR 扩展命令。位数必须匹配:64 位进程用 64 位调试器,32 位用 32 位,否则根本打不开。

基本信息

适用平台Windows 7/10/11 与各版 Server;任务管理器与 comsvcs 为系统内置
权限要求抓取其他用户的进程需管理员权限,系统进程可能需要更高权限
常用工具任务管理器、Sysinternals ProcDump、comsvcs.dll 导出
分析工具WinDbg 或 WinDbg Preview,核心命令 !analyze -v

典型使用场景

  • 应用崩溃但日志里只有一句“已停止工作”,需要根因
  • 进程假死无响应,希望在不重启的条件下保留现场
  • 内存持续增长怀疑泄漏,抓两个时间点的转储做对比
  • 间歇性崩溃无法复现,需要触发器式抓取提前预埋
  • 向厂商提交问题单时提供完整现场,缩短定位时间

常用示例

常用示例
:: 方式一:任务管理器(最省事)
::   Ctrl+Shift+Esc -> 详细信息 -> 右键进程 -> 创建转储文件
:: 方式二:Sysinternals ProcDump(支持触发式抓取)
procdump -ma -t 1234 C:\dumps\pid_1234.dmp
:: 方式三:系统内置 comsvcs(管理员运行,位数与目标进程一致)
rundll32.exe C:\Windows\System32\comsvcs.dll,MiniDump 1234 C:\dumps\pid1234.dmp full
:: 分析:用 WinDbg 打开 dmp 后执行 !analyze -v

抓取方式对照

方式适用场景注意
任务管理器手工即时抓取图形界面操作,最省事
ProcDump触发式或批量抓取-t 在进程挂起时抓取,适合间歇性问题
comsvcs MiniDump无外部工具时位数要与目标进程一致
full 参数包含完整内存文件可能非常大
mini 模式只含必要信息体积小,但分析深度有限
WinDbg 分析事后定位根因位数不匹配会打不开
抓取转储会让目标进程短暂暂停,内存大的进程更明显:生产高峰谨慎操作,并先确认目标磁盘有足够空间。
全内存转储的大小可能接近进程占用的内存,抓之前先看磁盘剩余空间;排查内存泄漏时,保留两个时间点的转储更有价值。

易错点

  • 32 位与 64 位进程要用对应架构的调试器分析,位数不匹配会打不开
  • 全内存转储大小可能接近进程内存,需先估算磁盘空间
  • 生产高峰抓取会让进程短暂暂停,可能引发超时或健康检查失败
  • 拿到转储就直接下结论,未结合日志与代码版本,定位结果可能偏

数据来源与参考

  • Microsoft Learn:ProcDump(Sysinternals)
  • Microsoft Learn:使用 WinDbg 分析转储文件

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌