注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gmd20的个人空间

// 编程和生活

 
 
 

日志

 
 

分析windows XP用户程序崩溃的dump文件,Dr Watson查看backtrace  

2012-01-11 19:41:55|  分类: 程序设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

inux很容易设置程序的core dump 文件,和用gdb分析程序崩溃时的backtrace。windows之前没怎么做过。

运行时windows也可以调用  MiniDumpWriteDump  函数来给自己的程序保存一个dump文件,好像以前在directx的文档里面看到一篇文章,Linux其实也是可以自己通过捕获异常退出信号,然后调用backtrace函数来打印调用堆栈的,可以看我blog里面文章。

 

       有的程序崩溃了,windows系统会自动提示你用 visual studio 等调试器来调试。 但有的时候,只会提示“程序崩溃是否给微软发一个报告”的对话框。根据崩溃的地方有没有调试符号信息来决定的?? 不是很清楚。但这时想查看 backtrace信息就不那么容易了。

 

      我的碰到的情况是,使用的第三方的exe来运行加载自己编译的dll,两个不兼容,就在exe里面崩溃了,肯定是自己的dll有关联的,但这时看不到崩溃的backtrace就不好定位错误信息了。

 

       在网上搜索了一下,发现其实是可以,不过比较麻烦一点。,windows xp采用不同于linux的设置,Linux根据你的配置会把core dump保存到当前目录,但widnows是使用统一一个程序Dr Watson 来管理用户程序崩溃报告。

默认的崩溃报告在这个位置。

C:\Documents and Settings\All Users\Application Data\Microsoft\Dr Watson

 文件夹里面有两个文件

drwtsn32.log 文件里面应该有报告。

user.dmp  是dump文件。

 

 

可以通过 drwtsn32  命令来查看。  运行这个命令后,会弹出一个对话框,有关的设置选项也可以查看的到。

比如把 crash dump type 改为full 类型,然后把 dump symbol table  等选项勾上后,以便保存更完整的信息。

分析windows XP用户程序崩溃的dump文件,Dr Watson查看backtrace - widebright - widebright的个人空间

 

再重新测试,生成新的 application error报告时,点击下面的崩溃报告,就可以查看一下详细的log,里面有程序崩溃是的函数的backtrace和出错的地址等,出错的汇编指令,加载的模块和程序等。

看了这个backtrace之后,我就知道是在我的dll的哪个函数里面调用的地方出错的,然后,自己先加一个Messagebox等待一下,以便有时间用visual studio 2008 先一步 attach 到指定进程上去,再崩溃时就可以在visual studio里面调试我的dll了,以及分析汇编等了。

 

 

系统自动生成的user.dmp 文件也可以用 windbg 程序打开,执行k命令查看backtace等,具体可以看windbg的命令参考。

 

分析windows XP用户程序崩溃的dump文件,Dr Watson查看backtrace - widebright - widebright的个人空间

 

参考文章:

使用 Minidumps 和 Visual Studio .NET 进行崩溃后调试

http://vicchina.51.net/research/other/seh/minidumps/intro.htm

 

Vista 上如何在程序崩溃时自动保存dump文件

http://blog.chinaunix.net/space.php?uid=53564&do=blog&id=2099414



---------------
2013--5-07补充
在visual studio 2010 里面也可以直接打开 dmp文件,进行调试了。
在visual studio 2008 以上,调试时,可以在debug菜单下面,选择 “save dump ” as mini dump with heap 生成的dmp文件。
  评论这张
 
阅读(1971)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017