WinCE中的Data/ Prefetch Abort等异常定位(通过map文件)
来源:互联网 发布:赵薇 知乎 编辑:程序博客网 时间:2024/05/17 16:44
在调试WinCE程序的时候,有时候会碰到Data/Prefetch Abort的异常,相信从事过WinCE开发的人对这种异常信息应该都不会陌生,系统会在调试控制台输出如下类似信息:
Exception 'Prefetch Abort' (3): Thread-Id=05870016(pth=9970c000), Proc-Id=057c0016(pprc=9973cdd4)‘TCPClient.exe’,VM-active=057c0016(pprc=9973cdd4) 'TCPClient.exe'PC=00000004(???+0x00000004) RA=00011254(TCPClient.exe+0x00001254) SP=0011f954, BVA=00000004
如下图:
Prefetch Abort和Data Abort的定位方法一样。
其中RA=00011254就表示产生异常的地址,也可以通过TCPClient.exe+0x00001254中的
0x00001254 + 0x00010000 = RA=00011254来计算。为什么是加上0x00010000呢?
PS: RA=00011254(TCPClient.exe+0x00001254)的00011254并不一定准确,还是用括号里的加法计算比较靠谱——by syrchina 2013-1-17
打开map文件,找到Preferred load address is 00010000的一段信息,你就明白要加上多少了。
在map文件中找到比0x000011254小且最接近的一个值,本程序中为0x00011108,如下图:
就可以判断是该函数中出了问题,要想找到具体出错在那一行,还得利用.cod文件进行定位。
SocketThreadFunc函数的起始地址为0x00011108,错误处的偏移地址为:
0x14C = 000011254 - 0x00011108(可以用windows计算器计算)。计算出偏移地址后,打开cod文件,寻找0x14C出现的位置,可以用记事本打开cod文件,用Ctrl+F查找14C,会定位到如下信息:
前边的;127就表示错误发生在代码中的第127行,分号应该是注释吧。
VS2005默认不会生成.map文件和.cod文件,修改以下两处就可以生成这两个文件了:
1.(.map)文件:在工程目录上右键->Properties->Configuration Properties->Linker->Debugging->Generate Map File(选择Yes(/MAP));
2.(.cod)文件:在工程目录上右键->Properties->Configuration Properties->C/C++->Output Files->Assembler Output(选择Assembly,Machine Code and Source(/FAcs))。
from:http://www.cnblogs.com/xFreedom/archive/2011/05/14/2046191.html
- WinCE中的Data/ Prefetch Abort等异常定位(通过map文件)
- WinCE中的Data/ Prefetch Abort等异常定位----通过RA的地址定位
- WinCE中的Data/ Prefetch Abort等异常定位
- WinCE中的Data/ Prefetch Abort等异常定位
- WinCE中的Data/ Prefetch Abort异常定位
- wince 应用程序崩溃原因分析data abort----通过产生MAP和COD文件的方式
- WINCE-如何通过map文件定位异常地址
- WINCE-如何通过map文件定位异常地址
- Difference Between Prefetch Abort and Data Abort
- 如何定位WinCE产生Data Abort错误的位置
- 如何定位WinCE产生Data Abort错误的位置(转载)
- 如何定位WinCE产生Data Abort错误的位置
- 如何定位WinCE产生Data Abort错误的位置
- 如何定位WinCE产生Data Abort错误的位置
- 如何定位WinCE产生Data Abort错误的位置
- 如何定位WinCE产生Data Abort错误的位置
- 如何定位WinCE产生Data Abort错误的位置
- 如何定位WinCE产生Data Abort错误的位置
- java代码检查工具
- java API开发hbase启动错误解决办法
- 2013 年最热门的 20 个 Web 设计趋势
- Redis指令文档
- SQL附加数据库提示 5120错误
- WinCE中的Data/ Prefetch Abort等异常定位(通过map文件)
- qt 透明化方法汇总
- Analog和RF领域经典书籍
- 2013年抽查各主要城市Java人才需求
- 阅读英文文献的技巧(总结版)
- disksim-3.0:Stopping simulation because of saturation解决方法
- Java多线程-工具篇-BlockingQueue
- Hibernate Reverse Engineering 生成ORM持久化类的问题
- jQuery:用方向键控制层的移动