17. procdump如何抓各种故障dump
分析dump的首要前提是快狠准
的捕获,但在真实场景中有一些抓的dump时机不对,给我们分析造成了很大的困扰,只得重新再抓,耽误双方的时间。
这里我推荐一款微软开发的 procdump,它是一个exe文件,官方地址:https://docs.microsoft.com/en-us/sysinternals/downloads/procdump
接下来我聊一下几个场景,也会不断的更新上去。
一:CPU 爆高怎么抓
procdump 20548 -ma -c 70 -s 5 -n 2 -o D:\testdump\
当进程 CPU>70% 时连续间隔超过 5s ,自动抓两个dump 。
- 20548 -> 进程ID
- -ma -> FullDump,为了减少痛苦,必须用这个
- -c 70 -> CPU >70% 时开始抓取,你可以设置 大一点。
- -s 5 -> 连续超过 5s 时
- -n 2 -> 总计生成2个dump
- -o xx -> dump保存地
最后就是截图,我改成 cpu>15% 的阈值,可以看到目录已成功生成 2 个dump。
二:程序卡死怎么抓
procdump 20548 -ma -h -o D:\testdump\
当窗体5s内都没有响应,自动产生dump文件。
三:程序崩溃怎么抓
procdump -ma -i D:\testdump
这个是将 procdump 注册到 AEDebug 中,当程序崩溃时自动产生dump文件。
四:内存暴涨怎么抓
procdump 20548 -m 4096 -ma -o D:\testdump\
当程序内存超过 4G 的时候自动生成 dump
五:指定异常怎么抓
procdump 20860 -e 1 -f StackOverflowException -ma -o D:\testdump\
程序中一旦抛出了 StackOverflowException 异常,自动生成dump。