我在Vxworks + PPC 603中发现异常“无效的程序计数器地址”。什么能导致程序计数器有一个无效的地址?
应用程序正在链接到多个“C”库。无法放置,可能会导致此问题?
错误的编译选项可能会导致这种情况吗?
任何方向或指针都会有帮助。
感谢
UPDATE:
我有,其成员函数指针的结构。结构本身是静态的,它的地址被传递并通过结构调用不同的函数。
在其中一轮测试中,我发现在函数指针中,函数地址值减1.如果函数地址是0x009a3730,那么PC的地址是0x00913729。另外,如果我更改编译器选项,崩溃的位置或发生崩溃后的运行次数会发生变化。
你是否正在通过函数指针进行任何函数调用? –
可能是你的堆栈被破坏,并且你从一个函数返回时将一个无效地址弹出到PC中。 –
@Oli Charlesworth,是的,我只通过函数指针进行大部分函数调用。 – Jay