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

    为了测试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博客

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. 下载安装WindbgWindbg是微软官方提供的调试工具,可以在微软官网上下载。 2. 打开Dump文件:在Windbg菜单栏中选择“File”->“Open Crash Dump”,选择要分析的Dump文件。 3. 加载符号:在菜单栏中选择“File”->“Symbol File Path”,添加符号文件路径,以便Windbg能够正确解析代码。 4. 分析Dump文件:在Windbg中输入“!analyze -v”命令,分析Dump文件。Windbg会输出Dump文件的分析结果,包括错误代码、异常信息等。 5. 查看堆栈:在Windbg中输入“kb”命令,查看当前线程的堆栈信息。堆栈信息可以帮助我们定位到出现问题的代码位置。 6. 查看变量值:在Windbg中输入“dv”命令,查看当前线程中的变量值。通过查看变量值,可以帮助我们了解程序运行状态,定位问题。 7. 分析调用栈:在Windbg中输入“!analyze -v -hang”命令,分析系统卡慢的原因。Windbg会输出系统卡慢的原因,帮助我们找到问题。 8. 分析内存泄漏:在Windbg中输入“!heap -s”命令,分析应用程序中的内存泄漏。Windbg会输出应用程序中的内存泄漏情况,帮助我们优化应用程序。 9. 分析CPU使用率:在Windbg中输入“!runaway”命令,分析CPU使用率。Windbg会输出CPU使用率高的线程信息,帮助我们找到CPU使用率高的原因。 10. 分析网络问题:在Windbg中输入“!netstat”命令,分析网络问题Windbg会输出网络连接信息,帮助我们找到网络问题的原因。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

故里2130-西安找工作

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

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

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

打赏作者

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

抵扣说明:

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

余额充值