记录一次对windows系统蓝屏信息的分析和问题处理参考的资料

文章地址自取,本文仅作记录

 

如何使用分析工具WinDbg:(4条消息) WinDbg蓝屏分析入门_windbg分析蓝屏教程_星河Cynthia的博客-CSDN博客

如何调查蓝屏的具体原因:内容来自(4条消息) 蓝屏代码0x1000007e 错误分析_jerryzhou;的博客-CSDN博客

 

一、如何使用WinDbg:

一、WinDbg介绍
WinDbg,英文全称为Windows Debugger,Windows调试程序。

WinDbg是Windows平台下面的一款调试工具,通过dmp文件对蓝屏、程序崩溃原因进行分析,定位问题根源。官方描述WinDbg功能为以下三点:

调试内核模式和用户模式代码
分析故障转储
在代码执行时检查 CPU 寄存器。
微软官方文档学习资料:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/

WinDbg下载地址:https://developer.microsoft.com/zh-cn/windows/downloads/windows-10-sdk/

二、符号表设置
符号表是WinDbg的关键数据库,没有符号表,WinDbg无法分析出更多的问题的原因,符号表设置方法如下:

首先,Ctrl+S弹出符号表设置窗口
然后,输入:SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols,点击OK


三、常用快捷键
1、打开dmp文件:Ctrl+D

2、关闭上一个dmp分析记录:Shift+F5

四、蓝屏信息分析
1、打开蓝屏dmp文件
打开蓝屏dmp文件后,显示参数System Uptime表示系统运行时间。从该参数可以得知蓝屏出现的时间,从而进行蓝屏定位,例如小于1分钟为开机蓝屏,大于1分钟为上机或者玩的过程中出现问题。如下图,在系统运行后的47分钟3秒167毫秒出现了蓝屏。

 

2、使用!analyze -v进一步分析
有时,在打开蓝屏dmp文件之后,会显示一个参数:Probaly caused by,表示可能导致蓝屏的驱动文件。如果没有这个参数,需要使用命令!analyze -v进行进一步分析。下图为执行命令!analyze -v之后显示的一个界面:

 

第一个部分表示蓝屏代码,这里的蓝屏代码为ea。

第二个部分表示WinDbg给的一些分析建议。

第三个部分表示蓝屏代码ea的四个参数。

这里通过点击help--Window,或者键盘F1进入帮助页面,查看蓝屏代码对应的参考信息,如下图。

 

关闭debugger帮助界面,继续回到WinDbg调试,通过鼠标下滑可以查看触发蓝屏相关的应用程序以及堆栈信息,如下图:

 

第一个部分表示蓝屏代码以及与之相关的四个参数。

第二个部分表示触发蓝屏的进程。触发蓝屏的进程文件可能是exe文件,也可能是dat文件或者dll文件,触发蓝屏文件的类型并不固定。但是应用程序并不是导致蓝屏的真正原因,因为用户态程序不会导致蓝屏,只有内核态程序才会导致蓝屏。

第三个部分表示堆栈信息。栈信息反映了错误发生前堆栈中的函数调用情况,从下至上进行调用。如上图,nt中的KeBugCheckEx函数被dxgkrnl中的函数TdrTimedOperationBugcheckOnTimeout调用,该函数又被dxgkrnl中的TdrTimedOperationDelay函数调用,然后TdrTimedOperationDelay函数被amdkmdag函数调用。通过这里的堆栈,分析导致蓝屏的主要原因。

另外,在堆栈信息下面有一个参数是IMAGE_NAME,表示触发蓝屏的驱动程序。如下图,触发该蓝屏的相关驱动为dxgkrnl.sys。在这里,程序FMSIScan.exe的运行触发了dxgkrnl驱动程序的一个bug,发生蓝屏。判断该蓝屏现象背后是一个驱动bug之后,通过驱动dxgkrnl.sys所属平台或者所属供应商,从而推动蓝屏bug的修复。

 

五、学习参考
1、CSDN《系统蓝屏日志DMP文件分析工具WinDbg及教程》

2、CSDN《WinDBG工具配置及蓝屏dump简单分析》

3、CSDN《Windows蓝屏DMP文件分析》

4、《微软官方WinDbg文档参考》
————————————————
版权声明:本文为CSDN博主「星河Cynthia」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/VinWqx/article/details/111675839

 

二、如何调查蓝屏的具体原因:内容来自(4条消息) 蓝屏代码0x1000007e 错误分析_jerryzhou;的博客-CSDN博客

WinDbg工具链接: https://pan.baidu.com/s/1I58KySbg-CCNH66PltIsTg 密码: k976(如何安装,参照引文1)
1、dump分析:http://www.eui.cc/3489.html
2、360专栏dump分析:http://blogs.360.cn/360safe/2013/04/02/dump-analyze-1-debug-flag-abuse-of-wdf01000-sys-bsod/
3、21.windbg-.lastevent、!analyze(dump分析、异常错误码查询):https://blog.csdn.net/hgy413/article/details/7590052
4、微软bugDoc:微软BugDoc
5、地下城与勇士贴吧同问题解决方案:https://tieba.baidu.com/p/5782980127?pn=2

最近几天电脑蓝屏3、4次,都是同样的蓝屏代码(0x1000007e ),表面上找不到原因,决定利用系统工具和WinDbg工具查看。
工具
eventvwr
WinDbg
流程
利用eventvwr查看信息
利用WinDbg查看内核详细信息

1、打开事件查看器

2、利用级别和时间排序,找到蓝屏错误的那一条记录,找到了详细信息。可以看到,日志文件dump位置,使用 Debugging Tools工具打开,查看详细信息。(注意,能记录日志的前提是已经开启了错误时,记录日志功能,如下)

3、查看dump文件之前,需要正确安装软件,并设置symbol file path,参照http://www.eui.cc/3489.html。


4、找到错误日志,使用DebuggingTools打开。

5、基本信息


6、点击!analyze -v命令,分析更详细信息,这里会加载一段时间,点击一下即可。

7、描述错误为:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED_M (1000007e)
参考了Dump分析系列一,里面提到,系统发生错误时,调试模式下会自动调用调试,但在发布版本中,找不到对应调试器就会蓝屏,理论上,用户环境中,当发生错误时,进入调试环境的入口应该是关闭状态。所以在在注册表中查看该键值

8、可以看到该键值为0,也就是说,是关闭状态


9、再看这句:Probably caused by : tesrsdt.sys ( tesrsdt+a865 ),大概确定是这个进程导致的问题


10、再看栈文件,发现错误发生在tesrsdt.sys调用

查看这个文件,发现是腾讯的组件
结论:
综合网友针对此问题的求助,已经确定tesrsdt.sys是腾讯旗下TP组件驱动的问题,大致得出结论是驱动的内存偏移量导致内存崩溃。

临时解决方案:
删除system32/drivers/下的tesrsdt.sys组件,重启游戏,让其重新下载,更新为新版本。参考引文5,有人删除组件后,更新后的数字签名表明了是新版本,且没有再发现蓝屏

有人若遇到这个(这类)问题,欢迎共同探讨更优的解决方案。
————————————————
版权声明:本文为CSDN博主「jerryzhou;」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_35206244/article/details/81698818

posted @ 2023-03-07 14:54  save_mental  阅读(731)  评论(0编辑  收藏  举报