您的位置:首页 > 其它

release下无法及时定位崩溃 导出dump文件来定位release版本 cod文件 map文件

2010-03-08 18:15 288 查看
由于在release下无法及时定位崩溃的位置,所以建议相关人员修改工程配置,以便导出dump文件来定位release版本。
下面以VS2005为例,介绍修改过程:
如果是lib修改4处地方:
1. 工程 à properties à C/C++ àGeneral à Debug Information Format 选择 “Program Database for Edit & Continue (/ZI)”可使release下可调式
2. 工程 à properties à C/C++ àOptimization àOptimization 选择 “Disabled (/Od)”
3. 工程 à properties à C/C++ àOptimization àWhole Program Optimization 选择 “No”(1,2,3与生成DUMP文件有关)
4. 工程 à properties à C/C++ àOutput Files àAssembler Output 选择 “Assembly, Machine Code and Source (/FAcs)”此处生成cod文件(包含汇编的所有code)
如果是dll除了修改上面4处,还要修改Linker处
5. 工程 à properties à Linker àDebugging àGenerate Map File 选择 “Yes (/MAP)”此处生成map文件(所有函数的入口内存地址 当崩溃时会有崩溃地址可以据此查询)
设置完之后编译即可。(现今一般调试有两种组合:1 cod文件+map文件 2 dump文件+windbg分析)

为了及时获取dump文件,程序在打包出去使用时,需要在使用的机器上运行系统自带的Mr Watson作为默认调试程序,步骤简单,如下:
1. 在运行中输入命令:“drwtsn32.exe -i”,结果如下:

2.再在运行中输入“drwtsn32.exe ”,做一些配置,如下图: 日志文件路径为所要放置dump文件的文件夹路径,故障转储就是该目录下的dmup文件路径。选择指令和错误数量可以写多点,比如50。
故障转储类型选择“完整”。选项中选择第1,2,3,6项即可。配置结束后,运行程序,当程序崩溃后会在所设路径下生成dump文件,我们可以从用户处拷回dump文件作分析。

由于默认release下不生成pdb文件,所以需要自己添加:

工程 à properties à Linker àDebugging àGenerate Program Database File 填入 “$(TargetDir)$(TargetName).pdb”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐