使用WinDbg分析软件突然崩溃的问题

news2024/11/24 6:56:50

    为了测试windbg有多么牛逼,所以仅仅只是测试一下,属于事后诸葛亮型,也只是为了验证一下,把此方法学会即可。

模拟场景:

    软件运行后,点击按钮,直接崩溃掉,什么提示都没有。因此,我们写一个wpf程序,调用c++的dll,然后点击按钮,直接崩溃,生成dmp,然后分析dmp文件。

1.使用c++写一个dll

崩溃的代码如下,我们只是为了创造崩溃的代码环境

然后生成dll

2.创建一个wpf程序

使用非托管方式调用c++的Project1.dll

3. 因为软件会自动崩溃,所以使用bat命令去捕捉dmp文件

这是启动bat

@echo off  
echo 正在启用Dump...  
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps"  
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpFolder /t REG_EXPAND_SZ /d "D:\CrashDump" /f  
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpType /t REG_DWORD /d 2 /f  
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpCount /t REG_DWORD /d 10 /f  
echo Dump已经启用  
pause  
@echo on 

名称:DumpCount,类型:REG_DWORD,最大保留Dump个数,默认为10。
名称:DumpType,类型:REG_DWORD,Dump类型(1-Mini dump, 2-Full dump),默认为1。
名称:DumpFolder,类型:REG_EXPAND_SZ,Dump文件保存的位置。 

4.这是停止bat

@echo off  
echo 正在关闭Dump...  
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /f  
echo Dump已经关闭  
pause  
@echo on 

 

5.双击开始的bat命令

乱码了。。。。不影响

6.启动wpf程序,点击按钮,程序会自动的崩溃

7.在存储的路径中会看到生成的dmp文件

8.使用windbg打开dmp文件

9.此处就比较有意思了

因为我测试了好几次

第一次:输入!t,就已经能看到异常了,当然是因为程序比较简单,而且我也专门写的这个错误,空引用异常了,非常的准确。

以上代码报错的是如下 

第二次(本案例):输入!t,也能看到异常,但是异常是BadImageFormatException,明显是不对的,但是点击进去的话,也可以看到是MessageBoxShow方法报错的

这里要说明一下第一次和第二次:CrashFunction和MessageBoxShow方法里面的内容都是

出现这种错误类型的提示,因为生成的c++的dll,我采用了不同的方式生成的,所以同样的代码,报错的类型不一样,但是最终指定报错的地方是一样的。 

10.其实最简单的就是点击一开始运行的地方

!analyze -v

里面把错误的代码已经标记好了

11.本案例只是为了验证一下流程是否走的通,实际现场环境肯定更加的复杂,分析此种问题,需要大量的dmp,然后从实践中提取方法和经验。

本案例的代码

https://download.csdn.net/download/u012563853/88523484

捕捉windbg命令

https://download.csdn.net/download/u012563853/88523541

来源:使用WinDbg分析软件突然崩溃的问题-CSDN博客

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

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

相关文章

统计学习笔记第 1 部分:Hoeffding 的不等式推导与模拟

照片由Unsplash上的Luca Bravo拍摄 1:背景与动机 霍夫丁不等式是数理统计和机器学习 (ML) 中的一个重要的集中不等式,广泛应用于统计学习理论等理论领域以及强化学习等应用领域。 我注意到,在机器学习社区的一些地方,通常将 Hoeff…

图数据库Neo4j详解

文章目录 第一章 图和Neo4j1.1 图数据库概念1.1.1 图论起源1.1.2 节点-关系及图1.1.3 图数据库1.1.4 图数据库分类1.1.4 图数据库应用场景1.1.5 与关系型数据库对比1.1.6 图数据库优势 1.2 Neo4j介绍1.2.1 Neo4j是什么1.2.2 Neo4j特点1.2.3 Neo4j的优势1.2.4 Neo4j的限制1.2.5 …

网络安全(黑客)-高效自学

首先给大家简单介绍一下网络安全: 1.什么是网络安全? 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、…

eNsp使用技巧

文章目录 显示网格对齐到网络水平对齐和垂直对齐 显示所有接口添加文本进入CLI界面数据抓包方式一方式二 显示网格 对齐到网络 水平对齐和垂直对齐 显示所有接口 添加文本 进入CLI界面 数据抓包 方式一 方式二

No source control providers registered

使用vscode时碰到这个问题 git扩展没启动

Linux前言

目录 Linux的应用场景 Linux的应用现状 Linux的版本 操作系统 什么是Linux操作系统? 为什么要用操作系统? 上篇我们介绍了Linux的历史背景和安装环境。 Linux的应用场景 因为Linux操作系统是开源,所以它流向各个领域。 场景1&…

【有限元方法】Newton-Raphson Method

Newton-Raphson Method Linear vs Nonlinear Analysis: At this point, we can conduct a linear analysis no problem ∫ ∑ i , j 1 3 σ i j ε i j ∗ d v ∫ t n ⋅ u ∗ d s ∫ ρ b ⋅ u ∗ d v ⇒ ∫ e [ B ] T [ C ] [ B ] d x ⏟ k e u e ∫ ∂ e [ N ] T t n …

2022最新版-李宏毅机器学习深度学习课程-P50 BERT的预训练和微调

模型输入无标签文本(Text without annotation),通过消耗大量计算资源预训练(Pre-train)得到一个可以读懂文本的模型,在遇到有监督的任务是微调(Fine-tune)即可。 最具代表性是BERT&…

Arcgis连接Postgis数据库(Postgre入门十)

效果 步骤 1、矢量数据首先有在postgis数据库中 这个postgis数据库中的一个空间数据,数据库名称是test3,数据表名称是test 2、Arcgis中连接postgis数据库中 3、成功连接 可以将数据拷贝或导入到gdb数据库中

Python---练习:把8名讲师随机分配到3个教室

案例:把8名讲师随机分配到3个教室 列表嵌套:有3个教室[[],[],[]],8名讲师[A,B,C,D,E,F,G,H],将8名讲师随机分配到3个教室中。 分析: 思考1:我们第一间教室、第二间教室、第三间教室,怎么表示…

FPGA运算

算数运算中,输入输出的负数全用补码来表示,例如用三位小数位来表示的定点小数a-1.625和b-1.375。那么原码分别为a6b‘101101, b6b101011, 补码分别是a6’b110011,b6‘b110101; 如果想在fpga中实现a*b,则需要将a和b用补…

口水战,余承东从没输过,小鹏最终只能低头和解

小鹏汽车创始人何小鹏近日发言称与余承东握手言和,感谢余总的大度,还表示与余承东探讨了技术路线,双方成为好朋友,可以看出这场口水战最终的赢家还是余承东。 这场口水战先以何小鹏吐槽友商的AEB误触太多,还声言99%是假…

Git应用(1)

一、Git Git(读音为/gɪt/。中文 饭桶 )是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 了解更多可到GIT官网:Git - Downloads GIT一般工作流程如下: 1.从远程仓库中克隆 Git 资源作为本地…

jenkins CSV编码导致乱码问题解决

问题:生产报告会乱码的问题,一般是有编码格式引起的。我遇到的问题是,jmeter需要读取csv的数据作为参数。但是我们并不知道csv保存是什么编码格式,有可能不是utf-8的编码格式,所以会导致中文乱码的问题 解决方案&#…

【广州华锐互动】太空探索VR模拟仿真教学系统

随着科技的不断发展,人类对宇宙的探索欲望愈发强烈。火星作为距离地球最近的行星之一,自然成为了人类关注的焦点。近年来,火星探测取得了一系列重要成果,为人类了解火星提供了宝贵的信息。然而,实地考察火星仍然面临着…

Linux安装MySQL8.0服务

Linux安装MySQL8.0服务 文章目录 Linux安装MySQL8.0服务一、卸载1.1 查看mariadb1.2 卸载 二、安装2.1 下载2.2 上传2.3 解压2.4 重命名2.5 删除2.6 创建目录2.7 环境变量2.8 修改配置2.9 配置文件2.9 用户与用户组2.10 初始化2.11 其它 三、开启远程连接MySQL 一、卸载 首先第…

【分布式id生成系统——leaf源码】

分布式id生成系统——leaf源码 号段模式双buffer优化id获取 Leaf ,分布式 ID 生成系统,有两种生成 ID 的方式: 号段模式Snowflake模式 号段模式 由于号段模式依赖于数据库表,我们先看一下相关的数据库表: biz_tag&…

大模型+人形机器人,用AI唤起钢筋铁骨

《经济参考报》11月8日刊发文章《多方布局人形机器人赛道,智能应用前景广》。文章称,工信部日前印发的《人形机器人创新发展指导意见》,按照谋划三年、展望五年的时间安排,对人形机器人创新发展作了战略部署。 从开发基于人工智能大模型的人…

SQL优化之MySQL执行计划(Explain)及索引失效详解

1、执行计划基础 1.1、执行计划(Explain)定义 在 MySQL 中可以通过 explain 关键字模拟优化器执行 SQL语句,从而解析MySQL 是如何处理 SQL 语句的。 1.2、MySQL查询过程 客户端向 MySQL 服务器发送一条查询请求服务器首先检查查询缓存&am…

为什么我一直是机器视觉调机仔,为什么一定要学一门高级语言编程?

​ 为什么我是机器视觉调机仔,为什么一定要学一门高级语言编程,以后好不好就业,待遇高不高,都是跟这项技术没关系,是跟这个技术背后的行业发展有关系。 你可以选择离机器视觉行业,也可以选择与高级语言相关…