• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2026-06-04 15:39 Aet 隐藏边栏 |   抢沙发  1 
文章评分 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. -mpMini dump,最小,只有线程栈和基本信息,文件小但堆数据不全
  3. -maFull dump,完整内存转储,含堆、句柄、所有内存
    1. 分析内存泄漏、看对象内容时用这个
  4. -mtTriage 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 位进程用 64ProcDump(procdump64.exe),32 位用 procdump.exe

windbg

dbgsrv

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

端口

  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
Everything will be better.

发表评论

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