图 1.1 异常信息
当大家看到该对话框的时候是不是也崩溃了,甚至觉得 windows 不好,其实
windows 已经告诉开发者一些很重要的信息并提供跟踪机制。
2. MAP 文件
MAP 文件是记录应用程序信息的文件(文本文件),里面大概包含了程序
的全局符号、源码模块名、源码文件和行号等信息,而这些信息能够帮助我们
定位出错的代码行。公司默认的标准化配置是不会生成 map 文件的,修改配
置方法:
C++ Builder6.0 配 置 方 法 : 在 Project->Options->Linker 页 面 下 将
Create debug information 项选上。编译时就会生成.map 的文件。
VS 配置方法:项目->属性->配置属性->连接器->调试:选择生成映射文件。
在 msvc2008 已不支持对行号的生成。
3. 定位分析
从崩溃提示我们可以知道模块 TemplateBC.EXE 在 0x00401B08 处作了
对地址 0x00000000 写的操作,由此引起异常。在这里我把 0x00401B08 称
为[崩溃地址]。
下面需要求崩溃地址在模块中的相对地址,我们知道 exe 的基址通常都是
0x00400000[模块基址],当然动态库除外。所以有以下:
[崩溃相对地址]0x00000B08 = [崩溃地址] 0x00401B08- [模块基址]
0x00400000-0x1000;为什么要减去 0x1000?作假?实际时由于通常
情况下ëPE 文件的代码段都是从ë0x1000 偏移开始的。下面打开 MAP 文件
看能找到什么信息:
评论0
最新资源