利用MapFile定位程序崩溃(报红牌)时的代码位置
来源:互联网 发布:域名被墙是什么意思 编辑:程序博客网 时间:2024/05/17 00:57
整理翻译:Mindon 2009 4-23 16:25
原文:http://www.codeproject.com/KB/debug/mapfile.aspx
1、生成MapFile
Project---Setting---C++----DebugInfo,选择Line Numbers Only
Project---Setting---Link---选择Generator mapfile;Project Options加入/MAPINFO:LINES /MAPINFO:EXPORTS
2、 让程序崩溃
char* pEmpty = NULL;
*pEmpty = 'x';
3、程序报出如下错误
"0x00401312"指令引用的"0x000000000"内存。该内存不能为"written"。
要中止程序,请单击“确定”
要调式程序,请单击“取消“。
4、定位错误
(1)定位文件
得到出错指令的偏移量
0x00401312减去MapFile记录的Preferred load address(MapFile第3行)
0x00401312-0x00400000=0x1312
在MapFile中找出是哪个文件?
在Rva+Base中找到第一个大于出错指令的obj的前一个obj就是出错的文件。
(2)定位代码行
0x1312-0x1000=0x312(出错指令在单元的地址)
Line numbers for ./Release/MapFile1Dlg.obj(E:/2-研发库/BugReport/MapFile/MapFile1/MapFile1Dlg.cpp) segment .text
41 0001:00000160 44 0001:00000172 53 0001:00000180 64 0001:00000190
69 0001:000001c7 70 0001:000001e4 73 0001:00000220 80 0001:00000230
80 0001:00000240 92 0001:00000250 93 0001:0000026a 101 0001:0000026f
102 0001:00000283 104 0001:00000287 105 0001:00000290 106 0001:000002a3
108 0001:000002ae 109 0001:000002c4 111 0001:000002d4 115 0001:000002e5
116 0001:000002fc 122 0001:0000030d 125 0001:00000330 126 0001:0000033e
128 0001:00000356 129 0001:0000035f 130 0001:00000370 135 0001:00000381
133 0001:00000392 135 0001:00000397 142 0001:000003b0 143 0001:000003b6
145 0001:000003ca 147 0001:000003d4 150 0001:000003f1 151 0001:000003fb
153 0001:00000403 158 0001:00000412 159 0001:00000447 164 0001:00000453
162 0001:00000457 164 0001:0000045f 169 0001:00000470 171 0001:00000473
0x312在以下地址范围(0x0000030d---0x00000330),代码行在122--125之间。
122 0001:0000030d 125 0001:00000330
- 利用MapFile定位程序崩溃(报红牌)时的代码位置
- 利用MapFile定位程序崩溃(报红牌)时的代码位置
- 利用MAP文件定位程序崩溃位置
- 如何定位Release 版本中程序崩溃的位置 ---利用map文件 拦截windows崩溃函数
- 如何定位Release 版本中程序崩溃的位置 ---利用map文件 拦截windows崩溃函数
- 定位Release 版本中程序崩溃的位置 ---利用map文件 拦截windows崩溃函数
- 如何定位Release 版本中程序崩溃的位置 ---利用map文件 拦截windows崩溃函数
- 通过创建MapFile来定位程序崩溃地址
- 通过创建MapFile来定位程序崩溃地址
- 通过创建MapFile来定位程序崩溃地址
- 如何利用 release 版本的 backtrace 来定位 android NDK 程序的崩溃位置
- 利用dump文件反向定位崩溃位置的体会
- 利用MAP文件定位程序崩溃代码行
- 利用MAP文件定位程序崩溃代码行
- 定位内核模块中导致内核崩溃的代码位置
- 程序崩溃的定位
- VC++ 反汇编定位程序崩溃位置
- IOS 定位代码中崩溃位置
- windows下nutch1.0环境搭建及测试
- Main函数参数argc,argv说明
- js检测时间
- mangos源文件中英文对照表
- makefile介绍
- 利用MapFile定位程序崩溃(报红牌)时的代码位置
- MANGOS数据表结构中文介绍
- 在ubuntu8.04上安装ISE EDK以及升级包
- 一个使用Flex和BlazeDS实现协作式数据输入的例子
- 关于VS2005中GridView的自定义分页,单选、多选、排序、自增列的简单应用
- URL中传递中文字符的解决方法
- MaNGOS资源
- 由塔科马大桥事件 谈软件架构
- 解决jsp开发中不支持EL问题