使用Windbg分析dump文件的一般步骤详解

AI摘要

本文详细介绍了使用Windbg静态分析dump文件的完整流程,包括查看异常类型、切换线程上下文、分析汇编指令和函数调用堆栈、加载PDB符号文件及结合源码定位问题。同时还涉及局部变量查看与IDA反汇编辅助分析,适用于C++软件崩溃排查。

目录

1、概述

2、静态分析dump文件的一般步骤

2.1、查看异常类型

2.2、使用.ecxr命令切换到发生异常的线程上下文,查看发生异常的那条汇编指令

2.3、使用kn/kv/kp命令查看异常发生时的函数调用堆栈

2.4、使用lm命令查看模块的时间戳,找到对应的pdb文件,设置到Windbg中

3、问题分析实例说明

4、使用Windbg详细分析dump文件,展现完整分析过程

4.1、查看异常类型和发生崩溃的汇编指令,初步分析

4.2、使用kn/kv/kp命令查看函数调用堆栈

4.3、找到pdb文件,设置到windbg中,查看完整的函数调用堆栈

4.4、可以将C++源代码路径设置到Windbg中,Windbg会自动跳转到源代码行号上

4.5、有时需要查看函数调用堆栈中函数的局部变量或C++类对象中变量的值

4.6、有时可能需要使用IDA去查看二进制文件的汇编代码上下文去辅助分析


C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)https://blog.youkuaiyun.com/chenlycly/article/details/125529931C/C++基础与进阶(专栏文章,持续更新中...)https://blog.youkuaiyun.com/chenlycly/category_11931267.htmlVC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.youkuaiyun.com/chenlycly/article/details/124272585C++软件分析工具从入门到精通案例集锦(专栏文章,持续更新中...)https://blog.youkuaiyun.com/chenlycly/article/details/131405795开源组件及数据库技术(专栏文章,持续更新中...)https://blog.youkuaiyun.com/chenlycly/category_12458859.html网络编程与网络问题分享(专栏文章,持续更新中...)https://blog.youkuaiyun.com/chenlycly/category_2276111.html       有很多正在学习C++软件调试技术的朋友或者刚入门的人,希望我能详细讲讲使用Windbg静态分析dump文件的一般步骤,他们好对照这个步骤去练习去实操。所以今天就来讲讲这个主题内容,先概要性讲述Windbg静态分析dump文件的一般步骤,然后再以一个问题分析实例详细展现分析dump文件的完整过程(与本课程相关的免费视频教程,已经发布到B站,具体地址见本文的的评论区)。

1、概述

       基本大部分软件都内置了异常捕获模块,在软件发生异常闪退崩溃时,会弹出相关的提示框,比如PC版的微信在崩溃时,其内置的异常捕获模块会捕获到异常并生成日志及dump文件,同时会弹出如下的发送错误报告的提示框:

提示框的下方会自动带上崩溃相关的文件,其中最后一个文件就是我们要讲的dump文件,点击确定则会将这些文件发送到腾讯远端的后台服务器上。腾讯后台的运维人员会收到通知,然后到服务器上将dump等文件下载下去分析。

       有些软件可能没有上传崩溃日志到服务器的功能,捕捉到异常时会自动将dump文件保存到指定的路径中,事后可以到该路径中取到对应的dump文件。如果客户机器上遇到崩溃,可以和客户联系,让客户帮忙从对应的路径中取来出dump文件发过去。

       使用Windbg分析包含异常上下文的dump文件,属于静态分析,下面就来详细讲一下拿到dump文件之后如何使用Windbg去静态分析dump文件。

      关于Windbg的下载安装及详细介绍,可以查看我之前写的文章:

WinDbg蓝屏分析入门 一、WinDbg介绍 WinDbg,英文全称为Windows Debugger,Windows调试程序。 WinDbg是Windows平台下面的一款调试工具,通过dmp文件对蓝屏、程序崩溃原因进行分析,定位问题根源。官方描述WinDbg功能为以下三点: 调试内核模式和用户模式代码 分析故障转储 在代码执行时检查 CPU 寄存器。 微软官方文档学习资料:https://docs.microsoft.com/zh-cn/windows-hardware/dr... 阅读详情

相关推荐

使用windbg分析dump文件的方法

https://zhuanlan.zhihu.com/p/613434365一般操作如下:

zunguitiancheng的专栏 754

Windbg分析Dump文件

什么是Windbg Windbg是微软发布的一款相当优秀的源码级调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。 Windbg能解决哪些问题 1:查看高内存。 2:查看搞CPU。 3:程序异常。 4:程序Hang死。 Windbg分析方式 1:使用windbg调试器attach到需要调试的进程。(会暂停进程的运行) 2:抓取进程的dump文件,使用windbg分析du...

差池 1624

使用Windbg分析dump文件定位软件异常的方法!

1、前言 Windbg是微软开发的在Windows平台下强大的用户态和内核态调试工具,是Windows系统排查软件异常的一大利器,使用Windbg能极大的提高我们排查问题的效率,Windbg可以快速分析出软件崩溃、死循环、死锁等多种异常。 很多时候,如果仅仅通过排查代码或者添加打印去排查软件的异常崩溃,效率会很低,特别是代码量比较大的大项目,查起来会更加费劲。并且有些软件异常不是必现的或很难复现的,更不利于问题的排查。我们可以在工程代码中引入谷歌的CrashReport库,给软件安装异常捕获机制,当

肖邦的夜曲的专栏 1万+

使用Windbg分析dump文件的一般步骤及要点详解

通过一个问题实例详细讲解使用Windbg静态分析dump文件的完整过程。

dvlinker的技术专栏 4万+

使用Windbg分析dump文件定位软件异常的方法与操作步骤

本文详细讲述了使用Windbg分析dump文件的一般步骤与诸多细节,并给出了一个实战分析实例,有一定的实战参考价值。

dvlinker的技术专栏 7万+

WinDbg分析dump文件

调试能力可以说是最重要,尤其对于C/C++程序员而言,更是如此! 当我们从测试那里拿到dump文件后,需要将对应的二进制文件(exe、dll等放到和出了问题的那台电脑同样的路径下) 1、用WinDbg打开dump文件 2、设置符号路径(生成二进制文件时对应的PDB文件,版本要一致!多个二进制文件的pdb最好生在同一目录): 3、设置源码路径(项目的solution路径,多个项目可以加到一个solution里面): 4、执行命令: !analyze -v 此时WinD.

Think88666的博客 8305

【C++软件实战问题排查经验分享系列 ④】pdb符号文件 | dump文件分类与生成方法 | Windbg分析dump文件 | Windbg动态调试 | Windbg常用命令 总结

在开发调试C++软件的过程中,时常会使用Windbg分析排查软件运行过程中遇到的各种异常问题。本文对使用Windbg涉及到的pdb符号文件、dump文件分类与生成方法、Windbg分析dump文件、Windbg动态调试目标进程、Windbg常用命令等诸多相关内容进行详细的总结,并给出相关的实战分析实例,供大家借鉴或参考。

dvlinker的技术专栏 3万+

使用Windbg分析dump文件排查C++软件异常的一般步骤与要点分享

本文详细总结了使用Windbg静态分析dump文件去排查C++软件异常的一般步骤与方法,供大家借鉴或参考。

dvlinker的技术专栏 3万+

云计算系统等保测评对象和指标选取

参考GBT22239-2019《基本要求》附录D 云计算应用场景说明。简要理解下图,主要是云计算系统安全保护责任分担原则和云服务模式适用性原则,指导后续的测评对象和指标选取。

ryanzzzzz的博客 4676

模糊控制——基本原理(附MATLAB程序)

模糊化:使用隶属函数将实际输入转换为模糊集合的隶属度值。规则库:利用“如果-那么”规则将模糊输入映射到模糊输出。推理机制:通过规则的模糊化和模糊集合的合成,生成模糊输出。去模糊化:将模糊输出转换为具体的控制信号,常用的方法包括质心法和最大隶属度法。这些步骤综合起来,实现了模糊控制系统对复杂和不确定系统的有效控制。模糊控制系统通过结合模糊逻辑和规则库来处理复杂系统中的不确定性和模糊性。它的核心在于模糊集合和隶属函数,通过推理机处理模糊规则,并最终通过去模糊化生成具体的控制信号。

qq_35623594的博客 5557

告别混乱!用Cadence Capture CIS高效管理你的原理图库:以单逻辑器件K9F2G08U0M为例

本文以单逻辑器件K9F2G08U0M为例,详细介绍了如何使用Cadence Capture CIS高效管理原理图库。通过三级分类体系、工程化命名规范和智能检索技术,帮助工程师实现从混乱到有序的转变,提升团队协作效率和设计准确性。

aizhi0169的博客 398

NeRF必读:Mip-NeRF总结与公式推导

由于远景近景的分辨率不同,导致经典NeRF对于多尺度场景的表达存在明显瑕疵:NeRF对于近景的重建比较模糊而对于远景的重建出现锯齿。简单粗暴的策略是supersampling,但是费时费力。相较于NeRF使用的位置编码(PE)方式,Mip-NeRF提出了积分位置编码的方式(IPE).这种编码方式可以多尺度地描述空间中的信息分布,make sense.

i_head_no_back的博客 6077

嵌入式开发新思路:用QP框架5步搞定状态机设计(附STM32移植指南)

本文介绍了在嵌入式开发中使用QP框架进行状态机设计的新思路。通过对比传统RTOS与事件驱动模型的差异,详细解析了QP框架的核心组件与优势,并提供了基于STM32的5步实战指南,包括环境搭建、状态机实现与性能优化技巧,帮助开发者从顺序阻塞思维转向高效的事件驱动架构。

milk5的博客 899

MATLAB基础应用精讲-【图像处理】GNN图神经网络(附python代码实现)

图神经网络由于其在处理非欧空间数据和复杂特征方面的优势,受到广泛关注并应用于推荐系统、知识图谱、交通道路分析等场景。图结构可描述复杂关系,如基因结构、通信网络、交通路线、社交网络等。图计算挖掘结构信息,但无法学习节点特征。神经网络在欧氏空间数据上表现优越,但无法直接应用于非欧氏空间的图数据。图神经网络结合图计算和神经网络优势,处理非欧氏空间数据及其复杂特征,应用于网络链接预测、推荐系统和交通道路分析等场景。实际应用中,图数据规模庞大,如百亿级节点、千亿级边,存储开销超过10TB。

qq_36130719的博客 1137

Pytorch入门实战(7):基于BERT实现文本隐喻二分类(Kaggle入门题目)

Bert入门实战,文本二分类问题

iioSnail的博客 4054

Spring AI提示词模板应用

本文介绍了使用SpringAI提示词模板的配置方法,主要步骤包括:1)在JDK17和SpringBoot3.4.4环境下引入spring-ai-alibaba1.0.0.2依赖;2)配置application.yml文件;3)创建测试控制器类处理提示词模板(.st文件);4)通过模板变量动态生成AI回复内容。演示了如何通过@RequestParam设置默认参数,实现无需前端传参即可测试AI回复功能,最终完成了一个SpringAI提示词模板的应用Demo。

wjianwei666的专栏 196

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 使用反汇编工具IDA查看动态库中的汇编代码上下文,结合安卓系统生成的Tombstone文件,排查安卓app程序底层C++库崩溃问题
下一篇: 使用Windbg调试目标进程的一般步骤详解
dvlinker
dvlinker 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄19年 13万+粉丝 1015原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dvlinker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值