我发现一个多线程应用程序的线程在VxWorks中崩溃了。我没有调试信息。在更深入的分析中,我发现崩溃是由全局内存地址值更改引起的。
这个全局内存地址(它是一个函数的地址)。我正在使用一个函数指针)正在堆中的特定地址位置存储。我发现这个全局内存地址本身被减少了2,这导致了不正确的访问和加载指令错误。
这是随机发生的。但是,我真的很惊讶是什么会导致地址值减少2。
任何猜测、想法或任何方向的指针都可能有帮助。
有些CPU有一个硬件断点,当写入内存位置时,它会让您中断。将CPU设置为在读取或写入该位置时中断,并在碰巧看到哪个函数正在执行该操作时查看堆栈。