vxworks:page fault

ying0808 2007-10-13 09:51:06
请求大侠帮忙!
在调试vxworks程序的过程中,总是会出现错误信息:page fault

我的环境是:P3的CPU,Tornado2.2,Vxworks5.5

调试信息显示为:
Exception number 14: Task: 0x1fb34078 (tDbgTask)

Page Fault
Program Counter: 0x0236244a
Status Register: 0x00010186
Error Code : 0x00000002
23b3a99 guidemo +e9 : InitGUI ([eeeeeeee, eeeeeeee, eeeeeeee, 1fe7ed68, eeeeeeee])
239d530 InitGUI +60 : InitGAL ([23b3940, 23b3936, 1fb34048, 23b3a9e, eeeeeeee])
235f152 InitGAL +72 : InitWindml (23b720c, 0, 0, 0)
23641f2 InitWindml +92 : i81xDevInit (1db0e510, 10, 0, 0)
2363efc i81xDevInit +9c : i81xGartInitialize (1db0e510, 0, 1000000, 1fb33fb4)
2362730 i81xGartInitialize+40 : excStub ([&InitWindml, 0, 0, 0, 400])
336b36 excStub +46 : excExcHandle (e, 1fb33f40, 1fb33f18, 1)
330e98 excExcHandle +38 : vxExcHookWrapper (e, 1fb33f40, 1fb33f18, 1fb33ea8)
329b4c vxExcHookWrapper+6c : wdbExcHook (3, 1fb34078, e, 1fb33f40, 1fb33f18, e, 1fb33e70
, 329af5)
3e771e wdbExcHook +9e : wdbEventPost ([&wdbExcEvtNode, 1fb33ecc, 1fb33e30, 3e7712, &
wdbExcHook])
3e50a7 wdbEventPost +77 : wdbNotifyHost ([0, 3, 1fb34078, 1fb33e24, 3f6963])
3e3996 wdbNotifyHost +26 : udpCancel ([0, 0, 1fb33de0, 3e3984, 0])
3e70e8 udpCancel +18 : vxSemGive ([1fb5f0ac, 206, &taskSwitchTable, 1fb5eeb0, 1fb33
dd8])

Break at 0x0032a612: vxSemGive + 0x12 Task: 0x1fb34078 (tDbgTask)


用tshell检查地址结果为:
-> lkAddr 0x00010186
wrs_kernel_text_start 0x00308000 text (vxWorks)
_sysInit 0x00308000 text (vxWorks)
_wrs_kernel_text_start 0x00308000 text (vxWorks)
sysInit 0x00308000 text (vxWorks)
sysInByte 0x00308080 text (vxWorks)
sysInByte0 0x0030808c text (vxWorks)
sysInWord 0x00308090 text (vxWorks)
sysInWord0 0x0030809d text (vxWorks)
sysInLong 0x003080a0 text (vxWorks)
sysInLong0 0x003080ac text (vxWorks)
sysOutByte 0x003080b0 text (vxWorks)
sysOutByte0 0x003080bb text (vxWorks)
value = 0 = 0x0


我感觉好像是进行了非法地址的读写,但是不知道原因在哪,怎么查找改正
请各位大侠多多指教!!
...全文
846 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ying0808 2007-10-14
  • 打赏
  • 举报
回复
谢谢ningxin!
我再试试找找原因
ningxin 2007-10-13
  • 打赏
  • 举报
回复
调试是这样看的:
从23b3a99这个地址,调用了guidemo;在guidemo程序偏移量+e9的地方,调用了InitGUI,
从239d530(InitGUI的地址),调用了.......


直到 udpCancel函数里,调用了vxSemGive函数,但是这个函数的0x12偏移量地址,是个非法地址,这个地址要么是没有在映射之中,要么是作为程序段没有可执行的代码。这个地址你可以从vxSemGive的参数里得到(应该就是PC指针)。
具体怎么解决,就看你代码啦!

2,179

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧