memory - 如何在嵌入式环境中找到内存损坏的根本原因?

标签 memory embedded corruption

我在嵌入式环境中检测到内存损坏(我的程序在具有专有操作系统的机顶盒上运行)。但我无法找到它的根本原因。
内存损坏本身是在多次启动和退出应用程序的压力测试后检测到的。考虑到我无法设置内存断点,因为每次启动应用程序时损坏的变量都会更改它的地址,是否有任何想法可以找到这种损坏的根本原因?

(内存断点是当环境改变给定内存地址的值时启动的断点)

另请注意,我所有的软件都是使用 C 语言开发的。

谢谢你的帮助。

最佳答案

这些在嵌入式系统中始终是难题,没有简单的答案。一些技巧:

  • 查看内存损坏的值。这可以给出明确的提示。
  • 查看内存损坏旁边的数据结构。
  • 查看内存损坏中是否存在模式。它总是在类似的地址吗?
  • 看看是否可以在运行时设置内存断点。
  • 嵌入式系统是否允许对内存区域进行沙箱化?设置沙箱以保护您的数据内存。

  • 祝你好运!

    关于memory - 如何在嵌入式环境中找到内存损坏的根本原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1683645/

    相关文章:

    gcc - 用于 ubuntu 的 ARM 工具链编译时出错

    c - 双重释放或损坏 (!prev) 中止(核心转储) C 语言错误

    linux - 在 Linux 2.6.x 下访问任何内存位置

    c - 使用C编程以一定的时间间隔产生音调

    serial-port - 带有HAL库的STM32F4-Discovery(STM32F429ZIT6)上的RS232(UART)吗?

    LInux 中的 C 套接字编程,双重释放损坏 (fasttop) 错误

    git repo 已损坏,无法状态为 : "BUG: fsmonitor.c:21: fsmonitor_dirty has more entries than the index"

    mysql - 限制 MySQL 用户的 CPU/内存使用

    c - C/C++(多线程)中线程本地存储(TLS)的实现

    c - 在C中将内存初始化为零是什么意思?