|
编译的时候注意先在project settings里的Link页里勾选“Generate mapfile”,会生成一个map文件。
把编译出来的RELEASE版本可执行文件放到CE5平台下运行。出错的时候串口打印了一句 Data Abort: Thread=83ad1d38 Proc=820266d0 'walzer_leak.exe' 这句是系统自动输出的。我们得到了一个关键的信息:PC指针。和PC指针在walzer_leak.exe中的偏移量。然后打开编译时生成的walzer_leak.map文件
OK,首先,里面有一句“Preferred load address is 00010000”,这意味着DATA ABORT那句的PC=00011008(walzer_leak.exe+0x00001008) 我们必须把括 号里的0x1008加上这个load address的偏移量,得到0x11008(注意不能直接用PC,一会儿再给个案例就知道了),然后我们在函数偏移列表里看Rva+Base 这栏,找到0x11008落在了DoLeak函数的地址范围里,所以是DoLeak函数泄漏了 |
WINCE下从data abort 找到崩溃的代码
最新推荐文章于 2025-07-05 08:00:00 发布
本文介绍了一种在CE5平台上定位内存泄漏的方法。通过分析系统自动输出的错误信息,结合编译时生成的map文件,成功定位到了引起内存泄漏的具体函数。
822

被折叠的 条评论
为什么被折叠?



