• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2026-06-04 15:39 Aet |  隐藏边栏 |   抢沙发 |  53 
文章评分 1 次,平均分 5.0 :

procdump

概述

  1. Sysinternals 里面的一个命令行抓 dump 工具,核心定位是按条件触发的转储工具
  2. 它可以在崩溃、CPU 飙高、内存超标、卡死等各种条件下自动抓 dump,不用盯着手动抓

三种基本工作模式

  1. Attach 到已运行的进程
    1. 直接给进程名或 PID

  1. 等待进程出现再 attach
    1. 进程还没起,守株待兔

  1. 自己启动进程并监控
    1. ProcDump 当启动器,注意这时目标要写全路径,且顺序是 -x

Dump 内容控制

  1. 这组开关决定 dump 文件里包含什么,直接影响文件大小和能分析出什么
    1. 不写 -m* 时默认是 mini dump
  2. -mp — Mini dump,最小,只有线程栈和基本信息,文件小但堆数据不全
  3. -ma — Full dump,完整内存转储,含堆、句柄、所有内存
    1. 分析内存泄漏、看对象内容时用这个
  4. -mt — Triage dump,介于两者之间,去除了敏感信息,适合给外部分享
  5. -md <callback.dll> — 用自定义 callback DLL 决定抓哪些内存(高级用法)

触发条件

  1. -c <百分比> — CPU 占用超过阈值时触发,常配 -s 指定持续时长
    1. -cl 是低于阈值触发
  2. m <MB> — 提交内存超过指定值时触发
    1. -ml 是低于
  3. -s <秒> — 持续满足条件多少秒后才抓(防抖动)
    1. 或在没有其他条件时表示「启动后 N 秒抓一份」
  4. -h — 窗口无响应(hung,卡死超过 5 秒)时触发
  5. -e — 发生未处理异常时触发
    1. -e 1 连第一次异常(first-chance)也抓
    2. -g 把托管(.NET)的异常也算进来
    3. -l 输出异常信息到控制台
  6. -t
    1. 进程退出/终止时抓一份(想看进程死前状态很有用)
  7. -f <过滤串>
    1. 配合 -e,只对包含特定文本的异常触发(按异常名或模块名过滤)
  8. -pl / -p
    1. 基于任意性能计数器触发(高级,可监控自定义计数器)

抓多次

  1. 默认抓一次就退出,要连续抓多份:
    1. -n <次数> — 总共抓几次后退出,比如 -n 3 抓三次
    2. -s <秒> — 配合 -n 控制两次之间的最小间隔

系统级 / 即时调试器

  1. -i [dump目录]
    1. 把 ProcDump 注册为系统的即时(postmortem)调试器,之后任何进程崩溃都会被它接住抓 dump
    2. 这是全局的
  2. -u
    1. 取消上面的注册,恢复原来的调试器
  3. -r
    1. 用克隆(reflect)方式抓 dump,大幅缩短目标进程被冻结的时间,对生产环境的高负载进程友好(Win7 SP1+),代价是占用更多内存

常见实战组合

  1. 启动即崩、想抓崩溃瞬间(等待出现 + 抓未处理异常)

  1. 抓 .NET 程序的异常(含托管异常)

  1. CPU 跑满定位死循环

  1. 进程随机退出,想看死前现场

  1. 内存泄漏,涨到 1GB 抓一份完整堆

注意

  1. 第一次运行会弹 EULA 同意框,自动化场景加 -accepteula 跳过

  1. 抓 64 位进程用 64 位 ProcDump(procdump64.exe),32 位用 procdump.exe

windbg

dbgsrv

  1. 把 Debugging Tools 对应架构目录(比如 x64)整个拷进虚拟机,运行
    1. 位数和目标进程对齐(64 位进程用 x64 的 dbgsrv)

端口

  1. 放行 1234 端口

WinDbg

  1. 命令行

  1. 或者 WinDbg 菜单 File > Connect to Remote Stub,填

Attach 并抓 dump

  1. 连上后 File > Attach to Process,列表中找到目标进程

实时(live)调试

  1. .dump /ma 只是顺手存了一份转储留档,这一步不改变当前会话状态,仍然连着那个活进程
  2. 所以抓完 dump 后可以接着调

声明:本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2026-06-26
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享
繁