软件crash后生成dmp,可用VC编译器和Windbg查看 简单使用问题
2014-05-25 11:03
716 查看
最近软件有个crash,在debug下几乎不会发生,在release版本下,长时间运行下基本上会发生,原本使用procdump进行监控并且用windg进行分析查看call stock,有时却发现会忘记,于是想把该功能写入软件,后期可以向qq等软件一样发生crash后可以进行发送个开发者,下面是这几天遇到的问题及其解决方案(只是几天的研究,功力浅,如有错误请谅解,如对你有帮助,请顶)。
接到该需求时,本人的思路是这样的,先crash时能够生成dmp文件,并且可以VC编译器或者windg进行定位代码(最好能用windg);百度后有下面的几篇很有参考和使用帮助/article/1360336.html,感谢该博客的博主那么详细的使用方式,根据该篇文章,不出意外应该可以进行dmp文件的生成和用VC调试,VC调试dmp文件方法,可以双击dmp文件,系统一般默认是用VC打开
点击debug with native Only,但是如果是release版本却发现定位不了信息,这是什么原因呢!具体设置请看http://www.wintellect.com/blogs/jrobbins/correctly-creating-native-c-release-build-pdbs,根据设计后是不是发现跟dubug一样呢!恭喜成功了。。。。下面将进行windg的使用和讲解。
配置请看http://support.icafe8.com/technologynews/focus/932.html,该网页前半部分讲解了windg的下载和配置,下面解决的东西我们不用理会。对于windg的使用最让人心酸莫过于Symbols一定要和你的系统对应,具体的配置请看http://www.cnblogs.com/happyhippy/archive/2007/04/08/710933.html,我个人比较倾向于让其自动下载对应的这里直接CTL+C吧
WinDbg的配置---具体请点击上面的网址
运行WinDbg->菜单->File->Symbol File Path->按照下面的方法设置_NT_SYMBOL_PATH变量:
在弹出的框中输入“C:\MyCodesSymbols; SRV*C:\MyLocalSymbols*http://msdl.microsoft.com/download/symbols”(按照这样设置,WinDbg将先从本地文件夹C:\MyCodesSymbols中查找Symbol,如果找不到,则自动从MS的Symbol Server上下载Symbols)。另一种做法是从这个Symbol下载地址中http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx,下载相应操作系统所需要的完整的Symbol安装包,并进行安装,例如我将其安装在D:\WINDOWS\Symbols,在该框中输入“D:\WINDOWS\Symbols”。(这里要注意下载的Symbols的版本一定要正确,在我的Win2003+Sp1上,我曾经以为安装Win2003+Sp2的Symbols可能会牛×点,但结果证明我错了,用WinDbg打开可执行文件时,提示“PDB
symbol for mscorwks.dll not loaded;Defaulted to export symbols for ntdll.dll”的错误,我有重新装上Win2003+Sp1的Symbols, 现在一切运行正常^_^)
下面讲解用windg来打开分析dmp文件,打开windg软件,在symbols是配置成功的前提下,打开windbg
选中dmp文件,会跳出save information
for workspace?这里选中NO,可以看到下图
但是感觉定位不到函数的位置,在查询答案的时候查到下面的网址,很有帮助的一个工程,遗憾的是工程本人没有在VS2010下编译成功,如有成功的,可分享的可以留下下载网址,万分感谢
http://www.codeproject.com/Articles/3497/Add-Crash-Reporting-to-Your-Applications-with-the这里也讲解了怎么创建dmp文件,主要看对windbg调试dmp的使用
环境配置我们在这里可以不做重复,主要是在上图的红线区域输入.ecxr可以看到
有可能是编译的优化,行数有可能不正确。生成dmp和使用VC编译器及其windg分析就到此为止。
第二如何发送邮件呢,这里本人功力不够,但是有个开源的代码很值得研究,而且会定时更新http://code.google.com/p/crashrpt/,这里只是蜻蜓点水,大神们如果有兴趣,可以继续研究。。。。。。
接到该需求时,本人的思路是这样的,先crash时能够生成dmp文件,并且可以VC编译器或者windg进行定位代码(最好能用windg);百度后有下面的几篇很有参考和使用帮助/article/1360336.html,感谢该博客的博主那么详细的使用方式,根据该篇文章,不出意外应该可以进行dmp文件的生成和用VC调试,VC调试dmp文件方法,可以双击dmp文件,系统一般默认是用VC打开
点击debug with native Only,但是如果是release版本却发现定位不了信息,这是什么原因呢!具体设置请看http://www.wintellect.com/blogs/jrobbins/correctly-creating-native-c-release-build-pdbs,根据设计后是不是发现跟dubug一样呢!恭喜成功了。。。。下面将进行windg的使用和讲解。
配置请看http://support.icafe8.com/technologynews/focus/932.html,该网页前半部分讲解了windg的下载和配置,下面解决的东西我们不用理会。对于windg的使用最让人心酸莫过于Symbols一定要和你的系统对应,具体的配置请看http://www.cnblogs.com/happyhippy/archive/2007/04/08/710933.html,我个人比较倾向于让其自动下载对应的这里直接CTL+C吧
WinDbg的配置---具体请点击上面的网址
运行WinDbg->菜单->File->Symbol File Path->按照下面的方法设置_NT_SYMBOL_PATH变量:
在弹出的框中输入“C:\MyCodesSymbols; SRV*C:\MyLocalSymbols*http://msdl.microsoft.com/download/symbols”(按照这样设置,WinDbg将先从本地文件夹C:\MyCodesSymbols中查找Symbol,如果找不到,则自动从MS的Symbol Server上下载Symbols)。另一种做法是从这个Symbol下载地址中http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx,下载相应操作系统所需要的完整的Symbol安装包,并进行安装,例如我将其安装在D:\WINDOWS\Symbols,在该框中输入“D:\WINDOWS\Symbols”。(这里要注意下载的Symbols的版本一定要正确,在我的Win2003+Sp1上,我曾经以为安装Win2003+Sp2的Symbols可能会牛×点,但结果证明我错了,用WinDbg打开可执行文件时,提示“PDB
symbol for mscorwks.dll not loaded;Defaulted to export symbols for ntdll.dll”的错误,我有重新装上Win2003+Sp1的Symbols, 现在一切运行正常^_^)
下面讲解用windg来打开分析dmp文件,打开windg软件,在symbols是配置成功的前提下,打开windbg
选中dmp文件,会跳出save information
for workspace?这里选中NO,可以看到下图
但是感觉定位不到函数的位置,在查询答案的时候查到下面的网址,很有帮助的一个工程,遗憾的是工程本人没有在VS2010下编译成功,如有成功的,可分享的可以留下下载网址,万分感谢
http://www.codeproject.com/Articles/3497/Add-Crash-Reporting-to-Your-Applications-with-the这里也讲解了怎么创建dmp文件,主要看对windbg调试dmp的使用
环境配置我们在这里可以不做重复,主要是在上图的红线区域输入.ecxr可以看到
有可能是编译的优化,行数有可能不正确。生成dmp和使用VC编译器及其windg分析就到此为止。
第二如何发送邮件呢,这里本人功力不够,但是有个开源的代码很值得研究,而且会定时更新http://code.google.com/p/crashrpt/,这里只是蜻蜓点水,大神们如果有兴趣,可以继续研究。。。。。。
相关文章推荐
- DMP文件的生成和使用(转),由于须要取得用户出现问题的信息,所以须要取得demp信息,可以通过本方法获取。
- VC++ 锁屏软件 CFileDialog使用问题
- 探索WTL和MFC混合使用的问题,兼容VC2010编译器
- 这是我学习COM遇到的几个基本问题其解决 黄森堂(vcmfc)著 1.我用ATL生成一个组件对象,我在COM中使用IDD_IEncrypt,这个在哪里写义,是啥?GUID? 答:IDD_IEncry
- 关于xp操作系统下使用VC6++编写的上位机软件在win10中运行的问题
- [转载].关于使用QII 10.0编译器无法编辑和查看中文的问题一个变通解决方案
- 在Windows下使用cl编译器编译生成简单的DLL例程
- [原创].关于使用QII 10.0编译器无法编辑和查看中文的问题一个变通解决方案
- Ubuntu下载常用软件和使用Caffe时的常见问题(亲测可用)
- 使用Sqlite的一些简单问题[VC]
- 查看已安装软件包的方法 and Oracle中文乱码解决办法总结 and Ubuntu12.04下Windows软件的安装(Wine的简单使用)
- 密码字典生成软件Crcunch的简单使用
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- 图片查看软件使用JAVA编写的,比较简单!从书上看下来的,练习使用!
- ADAMS使用过程中的license不可用导致软件不能打开问题的解决
- Eclipse X64版本下使用VS2010的VC编译器,库路径设置问题
- 使用Windbg找出死锁,解决生产环境中运行的软件不响应请求的问题
- 关于使用vc++调用matlab生成的dll传递数组的问题
- 查看VC++生成的dll的方法或函数名[dumpbin使用方法]
- 关于使用vc++调用matlab生成的dll传递数组的问题