转储失败蓝屏(win10蓝屏日志文件路径)

使用Windows 10蓝屏的概率比较高,但是有时候微软提供的错误代码不一定能帮我们解决问题。所以我们需要用更专业的工具来分析系统记录的日志。

检查日志后,可以定位蓝屏的具体原因。说起这个调试工具,鸭哥早上连续两次出现蓝屏死机,严重影响了工作,必须找出问题彻底解决。

WinDBG调试工具介绍:

这是一个官方工具,用于读取和分析微软生产的转储日志和内存日志。使用这个工具,您可以读取日志并检查其内容。转储日志和内存日志通常在。DMP或者。转储格式。

如果你尝试用记事本直接打开,肯定会直接返回错误。这就是为什么我们需要专业的工具来排除故障。有一些调试工具可以与Windows 10事件查看器一起使用。事件查看器可以提供基本的错误信息,

如果不能从事件查看器中确定问题的原因,可以使用WinDBG来分析日志。

转储失败蓝屏(win10蓝屏日志文件路径)

如何下载WinDBG调试工具:

现在调试工具微软不提供独立下载,需要通过Windows 10 SDK套件安装程序手动选择调试程序进行安装。

当然,你不需要担心,因为Windows 10 SDK只是一个安装程序,你可以自由选择安装哪些组件。比如我们只安装WinDBG。

Win10 SDK最新版:https://开发者。微软。com/zh-cn/windows/downloads/windows-10-SDK

下载后直接打开Windows 10 SDK安装程序然后取消选择,保留调试工具Debugging Tools for Windows。注意不要安装其他不必要的工具,否则您将需要下载大量的安装文件。

其他工具可根据您的实际需要选择安装。安装后可以在Windows 10开始菜单的Windows Kits文件夹中找到WinDBG调试工具,打开即可使用调试工具。

调试工具功能丰富,有点门槛。本文只介绍下载和安装,后面会介绍使用xttd的具体步骤。

WinDBG安装教程:

转储失败蓝屏(win10蓝屏日志文件路径)

转储失败蓝屏(win10蓝屏日志文件路径)

安装完成后,您可以在Windows开始菜单栏中找到Windbg。

安装可能会失败。如果失败,可以在“面板制作程序和函数”中卸载Microsoft Visual C 2010 re distributable,安装成功。

WinDBG使用教程:

参考链接:https://个文档。微软。com/en-us/windows-hardware/drivers/debugger/get-started-with-windows-debugging

使用前,您需要完成以下任务。

确定哪个设备充当服务系统,哪个设备充当客户端系统。调试器运行在客户系统中,程序运行在服务系统中。

确定要在用户模式还是内核模式下调试。内核态可以拥有很大的权限,可以访问系统的任何部分,很多核心操作系统功能和硬件驱动都运行在内核态。用户模式有很多限制,只能在自己的虚拟内存空间运行。

无法直接访问系统。

要调试内核状态,请参考:

For debugging user mode, please refer to: Getting Started with WinDbg (User Mode).

此外,还需要做以下事情:

配置符号表。为了使用WinDbg提供的所有高级功能,必须加载正确的符号表。Windows调试可以参考sym PS(WindBG,KD,CDB,NTSD)。

Windows调试中的符号表

配置源代码。如果您的目标是调试自己的源代码,您需要配置源代码路径。

Windows调试中的符号表

在符号表上

符号表和符号文件

当应用程序、库、驱动程序或操作系统被链接时,连接器会生成一个exe文件或dll文件,同时,它还会生成许多称为symbp文件的附加文件。符号文件有很多数据,运行二进制文件时不需要。

但是在debug过程中非常拥有。通常的,这些数据包含以下信息:

全局变量

局部变量

函数名以及他们实体指针的地址

帧指针表

源代码行数

这些都被成为symbp。例如一个简单的符号文件Myprogram.pdb可能包含上百个符号表。一般来说,软件公司发布两种版本的symbp file,

一种是全量symbp file包含全部pubpc symbps和private symbps,另一种简版的文件只包含pubpc symbps。

调试时,必须知道调试器能够获取与调试目标相匹配的symbp files,在线调试和调试crash dump files都需要symbps。

Windows以后缀名pdb保存symbps,vs将所有symbps保存在pdb文件中。

为Debugging获取符号表

设置好symbps是一项充满挑战的任务,特别对于内核态调试来说。它经常需要你知道你电脑产品的所有名字和releases,调试器必须能够定位到每一个产品的symbp file。

Debugging Tops for Windows contains a symbp store creation top called SymStore. Debugging Tops for Windows contains a symbp server called SymSrv.

配置符号表

微软官网上说的比较委婉,不容易操作。这里直接给出一种简单的设置方法。

将windbg安装目录添加到Path环境变量中。如:C:Program FilesDebugging Tops for Windows (x64)

新建一个环境变量_NT_SYMBOL_PATH 值为: SRV*c:mysymbp* http://msdl.microsoft.com/download/symbps

这句话告诉WinDbg,我的symbp文件保存在c:mysymbp文件夹里,其实里面什么都没有,甚至这个文件夹不存在,不过没关系,系统找不到的话会创建一个,并在上面的网址中去帮你下载符号文件放在里面。

重启计算机

重启计算机后会如果发现C盘多一个mysymbp文件,并且用windbg打开一个exe文件,

会看到Symbp search path is: SRV*c:mysymbp* http://msdl.microsoft.com/download/symbps提示信息,说明配置成功。

注意:进行完此步骤后,如果再次启动VS,VS会读取_NT_SYMBOL_PATH环境变量并且从中下载并读取symbp,这会造成VS启动调试非常缓慢,

建议不用Windbg时可以将_NT_SYMBOL_PATH换个名字。

Debugger如何识别符号表

调试中的符号问题

用户态调试入门

调试自己的程序

假设你已经编写如下程序

void MyFunction(long p1, long p2, long p3){ long x=p1 + p2 + p3; long y=0; y=x/p2;}void main(){ long a=2; long b=0; MyFunction(a, b, 5);}(1)用Visual studio 2015在x64、debug模式下生成一个Helloworld.exe,

(2)将Helloworld.pdb拷贝到设置的本地symbp文件夹中(参考:配置符号表)。

(3)用windbg打开Helloworld.exe和Helloworld.cpp。

接着就可以输入调试命令进行输入了,例如:

bu HelloWorld!main

意思是在HelloWorld的main模块处设置断点

g

开始运行程序

按F11进行单步调试,直到程序运行到y=x/p2将会崩溃,输出错误信息,类似这样:

(3058.3830): Integer divide-by-zero - code c0000094 (first chance)

First chance exceptions are reported before any exception handpng.

This exception may be expected and handled.

HelloWorld!MyFunction+0x53:

00000001`3f2a16d3 f7bd28010000 idiv eax,dword ptr [rbp+128h] ss:00000000`0014f648=00000000

是说发生了0除错误。

(4)!analyze -v

将会生成一堆对错误的分析。

调试notepad

此部分的先决条件是配置好symbp(参考: 配置符号表)。

用windbg打开notepad.exe,通常在C:WindowsSystem32,如图:

转储失败蓝屏(win10蓝屏日志文件路径)

转储失败蓝屏(win10蓝屏日志文件路径)

运行.reload,寻找并且加载symbps

x notepad!WinMain

寻找所有与WinMain匹配的symbps。

bu notepad!WinMain 设置断点

bl 显示已经设置的断点信息

g 运行程序直到断点、崩溃或程序结束

lm 显示notepad程序已经加载的模块

k显示当前线程的堆栈轨迹,即函数调用结构表

g 继续运行

按菜单栏的stop按钮停止调试

bu ntdll!ZwWriteFile 设置新的断点

bl 显示断点信息

~ 查看当前程序的所有线程

~0s

k

以上两个命令可以进入0好进程,并查看堆栈轨迹

qd退出调试

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://www.freetrip88.com/baike/292251.html

      
上一篇 2023-09-15
相关推荐