首页 » 技术SOS » 嵌入式系统 » 请教: vxWorks 调试:page fault!!

请教: vxWorks 调试:page fault!!

菜鸟
2007-10-09 15:29:51
在我调试程序的过程中,出现了page fault 的错误。 显示的调试信息为: 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) 哪位大侠遇到过类似的问题,帮帮忙啊!!!
分享
关键词: vxWorks, 嵌入式  
菜鸟
2007-10-12 23:07:31
1楼

是为内存问题,可能性有几种: 1. MMU配置问题,程序访问了MMU中没有配置的地址空间。 2. 堆栈出了问题,有可能是溢出或者遭到错误程序的破坏,比如常见的有数组越界。 3. 对齐问题。程序导致CPU发起了一个不支持的内存传输(x86和部分其它小对齐的CPU不会有这个问题)。 看你上面的现象,类似于堆栈破坏或溢出。 仅供参考

菜鸟
2007-11-09 20:45:23
2楼

是不是映像本身有问题!

菜鸟
2007-12-02 10:12:42
3楼

感谢关注! 针对yaopg提出的几种可能性,我有几点疑问,还请帮助解答,谢谢! yaopg:1. MMU配置问题,程序访问了MMU中没有配置的地址空间。 在程序中的确是访问了没有配置的地址空间,现在已经进行了地址配置,单步调试没有问题,但是跑整个程序的时候还是有这个问题,不知道是什么原因。 yaopg:2. 堆栈出了问题,有可能是溢出或者遭到错误程序的破坏,比如常见的有数组越界。 关于堆栈的问题我是头一次接触,不知道怎样进行调试,比如数组越界应该怎样查找呢,怎样看推展是否破坏或溢出? 感谢帮忙!!

专家
2022-10-11 12:39:52
4楼

太乱了