您的位置:首页 > 其它

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

2012-07-05 15:59 113 查看
由于在release下无法及时定位崩溃的位置,所以建议相关人员修改工程配置,以便导出dump文件来定位release版本。
下面以VS2005为例,介绍修改过程:
如果是lib修改4处地方:
1. 工程 -> C/C++ -> Debug Information Format 选择 “Program Database for Edit & Continue (/ZI)”可使release下可调式
2. 工程 -> C/C++ -> Optimization 选择 “Disabled (/Od)”
3. 工程-> C/C++ -> Optimization(优化)-> Whole Program Optimization 选择 “No”(1,2,3与生成DUMP文件有关)

4. 工程-> C/C++ -> Output Files -> Assembler Output 选择 “Assembly, Machine Code and Source (/FAcs)”此处生成cod文件(包含汇编的所有code)
如果是dll除了修改上面4处,还要修改Linker处
5. 工程 -> 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”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: