【问题标题】:Can a TLB (Load Word) exception be caused by incorrect compiler options usage?错误的编译器选项使用会导致 TLB(加载字)异常吗?
【发布时间】:2011-09-29 13:27:30
【问题描述】:

我在 VxWorks 中遇到 TLB(加载字或取指令)异常。当我进一步分析时,我了解到所引用的内存地址并未指向有效的内存位置。

据我了解,此问题可能是由于某些内存损坏(可能的内存覆盖)而发生的。但是,在 purify 下在 Windows 中分析代码和执行同一段代码不会显示任何内存错误。

所以,我想知道是否有任何编译器选项可能导致这种情况?有可能吗?

另外,关于如何调试此类问题的任何指示?

【问题讨论】:

  • 可能是对齐问题? 例如,在 windows 中 4 字节对齐可能没问题,但在 vxWorks 中需要 8 字节对齐。 仔细检查代码中的任何强制转换。
  • 值得怀疑。无法找到破坏内存的语句并不意味着它不存在。您无法在具有不同堆管理器的不同操作系统上获得可比较的结果。

标签: c exception memory vxworks tlb


【解决方案1】:

是的,某些处理器架构并在使用某些编译器标志编译的代码访问具有某些属性的内存时引发 TLB 异常。例如未缓存内存上的 PowerPC,带有导致对未对齐数据的对齐访问的编译器标志。

是的,但如果没有其他信息,“是”对您没有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2021-08-08
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多