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

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

模拟场景:

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

1.使用c++写一个dll

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

使用WinDbg分析软件突然崩溃的问题_第1张图片

然后生成dll

使用WinDbg分析软件突然崩溃的问题_第2张图片

2.创建一个wpf程序

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

使用WinDbg分析软件突然崩溃的问题_第3张图片

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命令

使用WinDbg分析软件突然崩溃的问题_第4张图片

乱码了。。。。不影响

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

使用WinDbg分析软件突然崩溃的问题_第5张图片

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

使用WinDbg分析软件突然崩溃的问题_第6张图片

8.使用windbg打开dmp文件

使用WinDbg分析软件突然崩溃的问题_第7张图片

9.此处就比较有意思了

因为我测试了好几次

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

使用WinDbg分析软件突然崩溃的问题_第8张图片

以上代码报错的是如下 

使用WinDbg分析软件突然崩溃的问题_第9张图片

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

使用WinDbg分析软件突然崩溃的问题_第10张图片

使用WinDbg分析软件突然崩溃的问题_第11张图片

使用WinDbg分析软件突然崩溃的问题_第12张图片

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

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

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

!analyze -v

使用WinDbg分析软件突然崩溃的问题_第13张图片

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

使用WinDbg分析软件突然崩溃的问题_第14张图片

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

本案例的代码

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

捕捉windbg命令

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

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

你可能感兴趣的:(WinDbg,wpf,windows)