如何定位WinCE产生Data Abort错误的位置

如何定位WinCE产生Data Abort错误的位置,第1张

让编译器滑悄产生map和cod文件

设置WINCEMAP和WINCECOD两个环境变量,然后重拿源新编译整个项目,我是在BAT文件中加入这两行消让态代码

set WINCEMAP=1

set WINCECOD=1

您好,计算错误函数中的偏移地址

CursorOff函数起始地址为0x10003578,错误指令在代码中的偏移为0xE8 (0x10003660 - 0x10003578)

找到错误出自哪行代码

打开文件s3c2440disp.cod文件(与s3c2440disp.obj在同一目录),定位到CursorOff函数偏移0xE8处(0x10003660 - 0x10003578, 错误地址-函数开始地址),即可找到了错误发生的汇编代码和对应的C源代码

624 : {

625 : break

626 : }

627 :

628 : ptrLine[x * (m_colorDepth >>3)] = cbsLine[(x - m_CursorRect.left) * (m_colorDepth >>3)]

000d0 e59430c0 ldr r3, [r4, #0xC0]

000d4 e59420e4 ldr r2, [r4, #0xE4]

000d8 e1a001a3 mov r0, r3, lsr #3

000dc e0463002 sub r3, r6, r2

000e0 e0227093 mla r2, r3, r0, r7

000e4 e021e690 mla r1, r0, r6, lr

000e8 e5d23000 ldrbr3, [r2]

000ec e5c13000 strbr3, [r1]


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12317016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存