Windows软件奔溃场景抓Dump的手段
  

新手881277 31453人觉得有帮助

{{ttag.title}}
本帖最后由 新手881277 于 2024-4-22 21:35 编辑

Windows软件奔溃场景抓Dump的手段

1、软件奔溃出现弹窗时,不手动关闭,在任务管理器中找到对应的进程创建转储文件(此方法容易抓不到真正奔溃的现场,建议使用下面其它的方法进行)
                    

2、使用 procdump procdump.zip (423.8 KB, 下载次数: 30) 抓取dump
某进程(如notepad.exe)一启动就崩溃,或者启动后过一段时间就崩溃。
32位进程: procdump.exe -e -ma -w notepad.exe
        -e 当遇到崩溃时,抓取dump
        -ma 生成full dump, 即包括进程的所有内存. 默认的dump格式包括线程和句柄信息.
        -w notepad.exe 如果notepad.exe没有运行起来,则等待它运行
64位进程: procdump.exe -e -ma -w notepad.exe -64
   如何判断需要加上 -64 参数?
         当 64位系统中,procdump.exe -h -ma -w notepad.exe无法抓取到dump时,则在后面加上-64参数
        
某进程(如notepad.exe)CPU占用率间歇性升高 ,如突然升高到50%,持续5秒左右就回落。应研发要求,希望前线同事帮助抓取dump。
    命令行输入命令如下:
   32位进程: procdump -ma -c 40 -s 3 -n 2 -w notepad.exe
    -ma 生成full dump, 即包括进程的所有内存. 默认的dump格式包括线程和句柄信息.
    -c 40 在CPU使用率到达40%的时候, 生成dump文件.
    -s 3 CPU阀值必须持续3秒才抓取dump文件.
    -n 2 在该工具退出之前要抓取2个dump文件.
    -w notepad.exe 如果该进程还没有运行的话,则等待它运行
  64位进程: procdump -ma -c 40 -s 3 -n 2 -w notepad.exe -64
   如何判断需要加上 -64 参数?
        当 64位系统中,procdump -ma -c 40 -s 3 -n 2 -w notepad.exe无法抓取到dump时,则在后面加上-64参数
        
其他参数
    -p 参数可以指定性能计数器。
        示例1:procdump -p "\Process(notepad)\Handle Count" 100 explorer.exe 当notepad.exe的句柄数超过100个时,则抓取explorer.exe的dump
        示例2:procdump -p "\Process(notepad)\Working Set" 1*1024*1024 notepad.exe 当notepad.exe的内存占用数超过1M时,则抓取notepad.exe的dump。
            该命令可以和 -s 、-n等结合 。请参考第2条
           
    -i 参数可以把自身安装为默认DUMP捕捉器。当进程崩溃时,会自动调用procdump.exe捕捉Crash Dump文件。       其他参数请自行体会
        
PS: 如果是某个进程未响应的情况也可以使用procdump来抓取dump:
例如某进程(如notepad.exe)经常性未响应。应研发要求,希望帮助抓取dump。
32位进程:procdump.exe -h -ma -w notepad.exe
    -h 当该界面进程未响应时间超过5秒,抓取dump
    -ma 生成full dump, 即包括进程的所有内存. 默认的dump格式包括线程和句柄信息.
    -w notepad.exe 如果notepad.exe没有运行,则等待它运行
64位进程:procdump.exe -h -ma -w notepad.exe -64
如何判断需要加上 -64 参数
当 64位系统中,procdump.exe -h -ma -w notepad.exe无法抓取到dump时,则在后面加上-64参数
PS:若进程是保活的服务一直运行的,可以根据进程的PID抓Dump
3、将下面内容保存为.bat文件,按照需要手动修改对应保存dump的路径和进程名称;并以右键管理员身份运行。
  1. rem 可根据实际情况修改保存dump的磁盘路径DMPPATH=D:\dumps
  2. SET DMPPATH=D:\dumps
  3. rem 可根据实际情况修改需要抓取的进程的名称ProcName=explorer.exe
  4. SET ProcName=explorer.exe
  5. SC CONFIG WerSvc START= AUTO
  6. NET START WerSvc

  7. REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger" /f
  8. REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger" /f

  9. REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger" /f
  10. REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger" /f


  11. REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\%ProcName%"  /f
  12. REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\%ProcName%"  /t REG_SZ  /v DumpFolder /d   %DMPPATH% /f
  13. REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\%ProcName%"  /t REG_DWORD   /v DumpCount /d  10 /f
  14. REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\%ProcName%"  /t REG_DWORD   /v DumpType /d  2 /f

  15. PAUSE
复制代码
4、在异常的电脑上安装Windbg X64 Debuggers And Tools-x64_en-us.zip (18.41 MB, 下载次数: 20) ,然后以管理员身份打开CMD窗口,执行"C:\Program Files\Windows Kits\8.1\Debuggers\x64\windbg.exe" -I命令。出现下面得弹窗就说明设置成功了。
         

653336626676924d8b.jpg (39.02 KB, 下载次数: 3)

653336626676924d8b.jpg

打赏鼓励作者,期待更多好文!

打赏
20人已打赏

新手612152 发表于 2023-4-11 15:39
  

感谢楼主分享,学习一下
新手780102 发表于 2023-4-11 15:10
  

感谢楼主分享,学习一下
韩_鹏 发表于 2023-4-10 11:06
  
感谢分享                                       
聂锴 发表于 2023-4-10 08:58
  
感谢楼主分享,每日学习打卡
Xaney 发表于 2023-4-7 15:42
  
楼主分享的案例很实用,具有典型性,希望有更多这样的干货供我们学习参考,非常感谢!
何茂源 发表于 2023-4-7 13:12
  
感谢分享有助于工资和学习!
暗夜星空 发表于 2023-4-7 09:24
  
坚持每日学习打卡
聂锴 发表于 2023-4-7 09:01
  
感谢楼主分享,每日学习打卡
LHzz 发表于 2023-4-3 10:01
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
发表新帖
热门标签
全部标签>
每日一问
每周精选
技术笔记
技术盲盒
2024年技术争霸赛
产品连连看
干货满满
2023技术争霸赛专题
技术咨询
标准化排查
技术晨报
新版本体验
通用技术
自助服务平台操作指引
秒懂零信任
文档捉虫活动
信服课堂视频
GIF动图学习
答题自测
功能体验
每日一记
SDP百科
技术圆桌
在线直播
安装部署配置
测试报告
畅聊IT
专家问答
MVP
网络基础知识
升级
安全攻防
上网策略
日志审计
问题分析处理
流量管理
运维工具
云计算知识
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
齐鲁TV
华北区交付直播
北京区每日一练

本版版主

468
221
32

发帖

粉丝

关注

本版达人

新手89785...

本周建议达人

YangZhe...

本周分享达人

runner

本周提问达人