WinDbg分析崩溃dump

1. 可以用everything软件工具搜索本机。如果没有windbg的话,可以去下载一个(根据需求选择x64或x86)。现在微软不提供单独的windbg下载,可以下载一个完整的windows sdk,在安装时只选择windbg即可。

2. 双击打开WinDgb.exe软件,File->Open Crash Dump。可能一打开dump,就找到了崩溃发生的位置,此时命令行前面的数字就表示了崩溃的线程编号"0:threadId>",比如0:128>就表示崩溃发生在128号线程。

3. 命令行输入".excr",定位到发生崩溃线程上下文位置。或者执行~128s,手动切换到128号线程上下文。

4.在输出信息中有“模块名!函数名+偏移地址offset1”, 指明了发生崩溃的位置。通过"?模块名!函数名+偏移地址offset1"计算崩溃的具体地址,记作pCrash,再通过"lm m 模块名"查看该模块此次被加载到进程中的基地址,记作pMbase。则该函数相对于模块的偏移地址offset0 = pCrash-offset1-pMbase,只要软件没更新,offset0和offset1每次运行都是不变的。如果找不到pdb符号文件,excr 输出信息中可能会没有函数名,即"模块名+offset",这个offset为offset0+offset1,如果想看这个崩溃位置所在的函数,可以用kn 指令查看当前线程的函数调用栈,最上面那一行就是目标函数信息,这样也可以推算出offset0和offset1。

5. u查看指定地址处的反汇编指令(u 模块名+(offset0+offset1)),默认是可以看到从指定地址起始的后面连续8条汇编指令。如果想看到更多,可以用"u 地址 行数"来查看指定行数的汇编指令。如果想看从给定地址往前的汇编指令,可以用"up 地址 行数",如果所给地址是某个函数的地址,也可以用"uf 地址"查看该函数的完整反汇编指令。

6.~*kn 可查看所有线程的信息,包括线程编号和线程调用栈;~3s 可切换到3号线程,然后执行kp/kn/kv查看当前线程调用栈相关信息。

7.如果还是找不到问题发生的原因,可以到开发环境进一步分析对应的模块反汇编代码(通过IDA逆向工具打开对应二进制模块,将IDA View-A中的内容导出到文本文件:Edit->Select all->Copy)。在模块的反汇编文件中,基地址是.textbss的Imagebase后面的数字,可以根据第4步算出来的offset0和offset1,叠加上这个基地址,就可以定位到出错的指令位置。如果因为软件版本不同,offset0和offset1已经不准确了,那可以用第5步看到的完整函数汇编代码段,尝试去匹配反汇编文件中的位置(因为虽然软件版本不同,但是某个函数内部逻辑大多数情况下不会发生太大变化)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习之基于Tensorflow卷积神经网络公共区域行人人流密度可视化系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在公共区域,如商场、火车站、地铁站等,人流密度的监控和管理对于确保公共安全…

anaconda的安装和Jupyter Notebook修改默认路径

anaconda的安装 就一个注意事项:在结尾时候记得配置系统环境变量 要是没有配置这个环境变量,后面就不能cmd启动Jupyter Notebook Jupyter Notebook修改默认路径 我们要找到Jupyter Notebook的配置文件 输入下面指令 jupyter notebook --generate-config就可以找到存放配置文…

Linux图形化界面怎么进入?CentOS 7图形界面切换

CentOS 7默认只安装命令行界面。要切换到图形界面,需要先检查系统是否安装图形界面,在终端输入以下命令: systemctl get-default若是返回结果是“multi-user.target”表示系统没有安装图形界面;若是返回结果是“graphical.target…

上传jar到github仓库,作为maven依赖存储库

记录上传maven依赖包到github仓库问题 利用GitHubPackages作为依赖的存储库踩坑1 仓库地址问题踩坑2 Personal access tokens正确姿势一、创建一个普通仓库,比如我这里是fork的腾讯Shadow到本地。地址是:https://github.com/dhs964057117/Shadow二、生成…

【分享】如何将word格式文档转化为PDF格式

在日常的办公和学习中,我们经常需要将Word文档转换为PDF格式。PDF作为一种通用的文件格式,具有跨平台、易读性高等优点,因此在许多场合下都更为适用。那么,如何实现Word转PDF呢?本文将介绍几种常用的方法,帮…

Git推送本地项目到gitee远程仓库

Git 是一个功能强大的分布式版本控制系统,它允许多人协作开发项目,同时有效管理代码的历史版本。开发者可以克隆一个公共仓库到本地,进行更改后将更新推送回服务器,或从服务器拉取他人更改,实现代码的同步和版本控制。…

Stability AI 推出稳定音频 2.0:为创作者提供先进的 AI 生成音频

概述 Stability AI 的发布再次突破了创新的界限。这一尖端模型以其前身的成功为基础,引入了一系列突破性的功能,有望彻底改变艺术家和音乐家创建和操作音频内容的方式。 Stable Audio 2.0 代表了人工智能生成音频发展的一个重要里程碑,为质量…

PHP算命源码_最新测算塔罗源码_可以运营

功能介绍 八字精批、事业财运、姓名分析、宝宝起名、公司测名、姓名配对、综合详批、姻缘测算、牛年感情、PC版测算、八字合婚、紫微斗数、鼠年运程、月老姻缘、许愿祈福、号码解析、塔罗运势、脱单占卜、感情继续、脱单占卜、塔罗爱情、心理有你、能否复合、暗恋对象、是否分…

JavaScript任务执行模式:同步与异步的奥秘

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

设计模式之代理模式ProxyPattern(六)

一、代理模式介绍 1、什么是代理模式? 代理模式是一种结构型设计模式,它允许为其他对象提供一个替代品或占位符,以控制对这个对象的访问。 2、代理模式的角色构成 抽象主题(Subject):定义了真实主题和代…

FineBI学习:K线图

效果图 底表结构:日期、股票代码、股票名称、开盘价、收盘价、最高价、最低价 步骤: 横轴:日期 纵轴:开盘价、最低价 选择【自定义图表】,或【瀑布图】 新建字段:价差(收盘-开盘&#xf…

鸿蒙准备1

鸿蒙心路 感慨索性, 看看鸿蒙吧。打开官网相关介绍 新建工程目录结构 感慨 最近面试Android应用开发,动不动就问framework的知识,什么touch事件的触发源是啥(eventHub),gc流程是啥,图形框架是什…

VS2022 .Net6.0 无法打开窗体设计器

拿Vs2022 建了个Demo&#xff0c;运行环境是net6.0-windows&#xff0c;无论双击或是右键都打不开窗体设计器 打开项目目录下的*.csproj.user <?xml version"1.0" encoding"utf-8"?> <Project ToolsVersion"Current" xmlns"htt…

【Hadoop】-Hive客户端:HiveServer2 Beeline 与DataGrip DBeaver[14]

HiveServer2 & Beeline 一、HiveServer2服务 在启动Hive的时候&#xff0c;除了必备的Metastore服务外&#xff0c;我们前面提过有2种方式使用Hive&#xff1a; 方式1&#xff1a; bin/hive 即Hive的Shell客户端&#xff0c;可以直接写SQL方式2&#xff1a; bin/hive --…

llama_index微调BGE模型

微调模型是为了让模型在特殊领域表现良好,帮助其学习到专业术语等。 本文采用llama_index框架微调BGE模型,跑通整个流程,并学习模型微调的方法。 一、环境准备 Linux环境,GPU L20 48G,Python3.8.10。 pip该库即可。 二、数据准备 该框架实现了读取各种类型的文件,给…

C++学习第十六课:宏与模板的基础讲解示例

C学习第十六课&#xff1a;宏与模板的深度解析 宏和模板是C中两个强大的特性&#xff0c;它们都允许编写灵活且通用的代码。宏通过预处理器实现&#xff0c;而模板则是C的编译时特性。本课将深入探讨宏的定义、使用以及潜在的问题&#xff0c;以及模板的基本使用、特化、偏特化…

LeetCode 110.平衡二叉树(Java/C/Python3/Go实现含注释说明,Easy)

标签 树深度优先搜索递归 题目描述 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡的二叉树定义为&#xff1a; 一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。 原题&#xff1a;LeetCode 110.平衡二叉树 思路及…

羽毛多肽复合纳米纤维膜

羽毛多肽复合纳米纤维膜是一种结合了羽毛多肽和其他纳米纤维材料&#xff08;如P(MA-AA)等&#xff09;的新型生物材料。这种复合纳米纤维膜通过引入羽毛多肽&#xff0c;进一步提升了其生物相容性、生物活性以及吸附性能。 羽毛多肽作为一种天然生物材料&#xff0c;具有良好的…

Centos7+Hadoop3.3.4+KDC1.15+Ranger2.4.0集成

一、集群规划 本次测试采用3台虚拟机&#xff0c;操作系统版本为centos7.6。 kerberos采用默认YUM源安装&#xff0c;版本为&#xff1a;1.15.1-55 Ranger版本为2.4.0 系统用户为ranger:ranger IP地址主机名KDCRanger192.168.121.101node101.cc.localKDC masterRanger Admin…

Spring6 当中的 Bean 循环依赖的详细处理方案+源码解析

1. Spring6 当中的 Bean 循环依赖的详细处理方案源码解析 文章目录 1. Spring6 当中的 Bean 循环依赖的详细处理方案源码解析每博一文案1.1 Bean的循环依赖1.2 singletion 下的 set 注入下的 Bean 的循环依赖1.3 prototype下的 set 注入下的 Bean 的循环依赖1.4 singleton下的构…
最新文章