-1

我发现一个多线程应用程序的一个线程在 VxWorks 中崩溃了。我没有调试信息。经过更深入的分析,我发现崩溃是由于全局内存地址值被更改而引起的。

这个全局内存地址(它是一个函数的地址。我使用的是函数指针)存储在堆中的特定地址位置。我发现这个全局内存地址本身正在减少2,这导致不正确的访问和加载指令错误。

这是随机发生的。但是,我真的很惊讶是什么导致地址值减少了 2。

任何方向的任何猜测、想法或指示都可能会有所帮助。

4

1 回答 1

4

一些 CPU 有一个硬件断点,可以让您在写入内存位置时中断。将 CPU 设置为在读取或写入该位置时中断,并在碰巧看到哪个函数正在执行此操作时查看堆栈。

于 2010-05-04T10:31:14.970 回答