WINDBG 查崩溃

news2024/9/24 19:17:48

前言:windbg大家都很熟悉,它是做windows系统客户端测试的QA人员很应该掌握的定位程序崩溃原因的工具,

网上也有很多资料,但是真正适合QA阅读和实用的资料不多,我把我认为最重要最应该掌握的结合以前的使用经验分享一下:

基础篇

1、  打开windbg,打开dmp文件,File——〉open crash dump(其实有更方便的方法,后面会说)

2、  设置符号下载路径和加载路径,File——〉symbol file path,输入srv*d:\symbolslocal*http://msdl.microsoft.com/download/symbols,中间这个路径可以随意设置,如果有其他符号路径,比如产品的模块PDB,加分号分隔即可。

符号是可以定位到具体函数,甚至具体错在哪一行代码的。在分析过程中只要dmp中牵涉到相关的微软模块的pdb都会被下载和加载。网上也有“集合版”的pdb,可以自行搜索,但是符号对应模块的版本不一定适合。

3、  弹出一个workspace的对话框,选什么都无所谓,yes、no都一样,不需要关注

4、  打开dump以后可以看到命令行窗口,如下图打开一个IE的dump文件:

5、  上图最下方的输入窗口就是用来输入调试命令的

6、  第一条命令: !analyze –v,回车,这条命令是万金油,可以自动分析大概是谁导致的崩溃,那么它执行后要关注什么内容?看下图

7、  上图应该怎么看?从下往上看!这里面就是崩溃时内存里面的模块的执行过程。注意看“Following XXX”,字面意思是接下来的段可以错了,程序在这里崩溃了的意思,因为是从下往上走的,所以“Following XXX”上方的内容就是崩溃后的东西,而“Following XXX”下方的内容就是导致崩溃的“原因”,越接近“Following XXX”的越代表有可能是导致崩溃的直接模块,但是这不一定。如果抓到的dmp时机太迟,会出现堆栈破坏的情景,那么“Following XXX”得到的内容可能就是错误的了,那么这个dmp意义就不大,当然QA可以不关注这个,要关注的是如何让自己抓dmp的时机更及时。

8、  第二条命令:kb,回车,这条命令是上面的补充,用来显示当前线程call stack(调用栈)的内容,它可以查看更详细的内存信息,更好的定位崩溃原因,比如上图内容看不到360相关的东西,是不是说这个崩溃和360没关系呢?不一定!看kb的内容

9、  记住从下往上看!上图可以看到是IE调用了safemon.dll的函数后才开始创建dmp的,是不是有理由怀疑这个崩溃和网盾有关了?提BUG吧!

10、  可惜我们只看到和网盾有关,但是具体是网盾什么函数、什么参数导致的都看不到,如何看?这时就看出符号文件的重要性了!

Ps:还有一个命令是~*kb ,它用来显示dump中所有线程的call stack, 一般用到它说明这个dump已经比较难看了,可以从命令结果中搜索KiUserExceptionDispatcher等关键字,一般可以认为存在KiUserExceptionDispatcher的线程就是导致崩溃的线程。

高级篇 

1、  设置DMP类型文件关联用windbg打开

  a) cmd到windbg目录运行windbg –IA 

2、  手动抓DMP的方法:

  a) 如果程序崩溃后没有DMP文件生成可采取下面方法转存DUM。

  b) 当程序崩溃还没有退出的时候,开启WINDEBUGGER程序,在FILE——执行attach to a process——选择崩溃的进程。

  c) 再执行.dump /ma C:\testdump.dmp(如果没有/ma,dump大小比较小) 

3、自动抓DMP的方法:

  a) cmd到windbg目录运行 windbg -IS

  b) 进行导致崩溃的操作

  c) 即可抓到dmp,执行.dump /ma C:\testdump.dmp 

4、  使用windbg调起进程调试

  a) 开启WINDEBUGGER程序,在FILE——执行Open Executable——选择要进行调试的进程文件

  b) 当进程没有自保护或者没有反调试时,在input框输入g,回车,即可打开进程,此时如果进程发生崩溃,会被立即捕捉到。这种方法拿到的dmp比第二种更好。

5、  设置Global Flags,自动attach进程。Global Flags(简称gflags),设置它之后,目标进程启动时会立即被attach,主要用于调试一些系统进程,或“有依赖的”进程,这些进程不能直接由方法4打开,只能由其他进程调用,而调用用立即崩溃,所以也不能用方法2。这个方法同时可以设置很多检查项。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/713101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SPI机制

SPI机制是Service Provider Interface,是服务提供发现机制,用来启用框架扩展和替换组件。比如java.sql.Driver接口,其他不同厂商可以针对同一接口做出不同的实现,MySQL和PostgreSQL都有不同的实现提供给用户,而Java的S…

学生台灯护眼好还是防近视好?专家推荐的学生台灯分享

其实学生台灯如果护眼效果好也是能在一定程度上防近视的,这两种是由联系的并不冲突。我们要知道造成近视的主要原因的是什么?是不是每天长时间高强度的学习?是不是长时间玩电子产品没有合理休息?这些都导致一个结果,那…

为什么使用消息队列?消息队列有什么优点和缺点?常用的MQ 都有什么区别,以及适合哪些场景?

问题: 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 为什么使用消息队列? 其实就是问问你消息队列都有哪些使用场景,…

计算机专业大学如何自学?常用网站和工具

耗时5小时,第一个B站视频,满足分享欲 计算机专业现状 or 困境?如何自学?常用网站科普!_哔哩哔哩_bilibili 👆发了个视频,结合文章中的链接,保存到自己浏览器收藏夹里就完了 目录 …

亚马逊买家账号防关联怎么弄?

如果你希望你的亚马逊买家账号不被关联到其他账号,你可以采取以下措施来增强账号的安全性和保护个人信息: 1、强密码:使用强密码来保护你的亚马逊账号。确保密码包含字母、数字和特殊字符,并且长度足够长。避免使用与其他网站或账…

Linux day2

在 Linux 系统中,你看到一个文件的属主和属组都是 root,它的权限是 -rwxrwxr--,那么下面的描述中哪个是不正确的() 官方解析: 文件类型和文件权限由10个字符组成: 第 1 位表示文件的类型&#x…

黄牛泛滥如何影响亚洲的演唱会和现场娱乐行业

随着新冠大流行的结束,中国的各类线下娱乐活动尤其是演唱会等又逐渐红火了起来,但蓬勃发展的现场娱乐活动却饱受日益严重的黄牛问题的困扰。黄牛是指个人通过使用自动化机器人批量购买现场活动门票,然后以高昂的价格转售的行为(黄…

【python】基础应用

python 基础 变量函数函数定义函数参数说明匿名函数 lambda 文件文件编码文件读取文件写入 异常tryExceptionelsefinally异常的传递 模块模块导入自定义python包并导入第三方包的导入 JSON 变量 python 中变量的定义不需要指定变量的类型,直接进行定义,…

五月&六月券商金工精选

✦研报目录✦ ✦简述✦ 按发布时间排序 海通证券 通往绝对收益之路(八):“固收”产品股票端的量化解决方案 发布日期:2023-05-05 关键词:固收、股票、量化策略 主要内容:本研报研究了优秀的“固收”产品…

考完PMP就可以做项目经理了?

接触过项目的自然没问题,如果是小白 0经验肯定是不能直接做项目经理的。 首先是要积攒一些经验,如果是纯小白,建议再去考一个P2(prince2)证书,这个证书主要是实操为主,可以带着你手把手去做项目&#xff0…

【C++11】lambda表达式详解

目录 1.lambda引入 2.语法 3.捕捉列表详解 [ ] 不捕获任何外部变量 [] 捕获父作用域的所有变量的值,只读不可以修改 [&]捕获父作用域的所有变量的引用,可修改捕获的变量 [val] 只捕获指定的变量值,不可以修改 [&val] 只捕获外…

【云原生系列】云计算概念与架构设计介绍

1 什么是云计算 云计算是一种基于互联网的计算模式,在这个模式下,各种计算资源(例如计算机、存储设备、网络设备、应用程序等)可以通过互联网实现共享和交付。云计算架构设计的主要目标是实现高效、可扩展、可靠、安全和经济的计算…

读者与写者问题

本篇文章我们使用C探讨一下读者与写者问题. 1. 读者与写者问题引入 读写操作是计算机中对存储区最常见的两种操作. 我们之前探讨了生产者与消费者问题, 知道了如何开启多个线程, 现在就可以直接写出读者与写者问题的最基本的代码了, 仍从最简单的情况开始--两个读者, 代码如下…

React01-React简介及环境搭建

一、SPA 单页面应用 1. 多页面应用(MPA) 一个链接对应一个页面。 优点:便于百度搜索。 缺点:请求量大。 应用:电商网站 2. 单页面应用(SPA) 应用:音乐网站 优点:…

Babylist EDI 需求详解

Babylist 是一个为准父母提供方便和灵活的婴儿注册服务的平台,帮助他们准备迎接新生儿的到来。Babylist 与各种不同的品牌和零售商合作,包括婴儿用品、玩具、衣物和其他相关产品的制造商。用户可以在 Babylist 上浏览各种不同的产品,并根据自…

9、Redis集群(cluster)

是什么 Redis集群是一个提供在多个Redis节点间共享数据的程序集,Redis集群可以支持多个master 能干嘛 Redis集群支持多个master,每个master又可以挂载多个slave 读写分离 支持数据的高可用 支持海量数据的读写存储操作 由于Cluster自带Sentinel的故障转…

UWB智能定位管理系统源码(Java+ vue+ spring boot)

智能定位管理系统技术架构:Java vue spring boot 一、系统概述 系统聚焦基于UWB(超宽带)技术的底层定位网络和定位算法,通过对定位分站、定位标签、定位引擎的硏发,实现高精度定位网络,获取高精度定位结果,支撑行业大…

爬虫入门指南(6):反爬虫与高级技巧:IP代理、User-Agent伪装、Cookie绕过登录验证及验证码识别工具

文章目录 前言IP代理与User-Agent伪装IP代理User-Agent伪装 使用Cookie绕过登录验证使用验证码识别工具未完待续... 前言 随着互联网发展,网站数据变得越来越重要。然而,为了保护其数据的安全性和唯一性,网站通常会采取反爬虫措施。本篇博客将…

一场由AIGC引发的网文变革

文 | 螳螂观察 作者 | 青月 2019年底《庆余年》第一季播出引发了全民追剧热潮,不仅实现了国内的口碑、流量双丰收,还收获了包括韩国在内的27个国家或地区海外观众的超高评价。 经过三年多的蓄力,前不久《庆余年》第二季发布了开机特辑。这…

论文解读|CVPR 2023:非刚性点云匹配的神经内嵌算法

原创 | 文 BFT机器人 01 背景 在非刚性点云匹配领域,将两个或多个形状的点云对应起来是一个具有挑战性的任务。在这个问题中,形状的变形可能会导致点云之间的几何形状和拓扑结构的差异。因此,点云匹配方法需要能够识别和建立这些非刚性变形下…