【发布时间】:2011-09-29 13:27:30
【问题描述】:
我在 VxWorks 中遇到 TLB(加载字或取指令)异常。当我进一步分析时,我了解到所引用的内存地址并未指向有效的内存位置。
据我了解,此问题可能是由于某些内存损坏(可能的内存覆盖)而发生的。但是,在 purify 下在 Windows 中分析代码和执行同一段代码不会显示任何内存错误。
所以,我想知道是否有任何编译器选项可能导致这种情况?有可能吗?
另外,关于如何调试此类问题的任何指示?
【问题讨论】:
-
可能是对齐问题? 例如,在 windows 中 4 字节对齐可能没问题,但在 vxWorks 中需要 8 字节对齐。 仔细检查代码中的任何强制转换。
-
值得怀疑。无法找到破坏内存的语句并不意味着它不存在。您无法在具有不同堆管理器的不同操作系统上获得可比较的结果。
标签: c exception memory vxworks tlb