【问题标题】:Reducing Valgrind memory usage for embedded target减少嵌入式目标的 Valgrind 内存使用
【发布时间】:2018-12-18 15:13:38
【问题描述】:

我正在尝试使用 Valgrind 在嵌入式 Linux 目标上调试崩溃程序。当没有运行时,系统大约有 31 MB 的可用内存,我的程序使用大约 2 MB 的内存,剩下 29 MB 给 Valgrind。不幸的是,当我尝试在 Valgrind 下运行我的程序时,Valgrind 报错:

Valgrind's memory management: out of memory:
   initialiseSector(TC)'s request for 27597024 bytes failed.
      50,388,992 bytes have already been mmap-ed ANONYMOUS.
Valgrind cannot continue.  Sorry.

有什么方法可以减少 Valgrind 的内存使用量,使其在这种环境中成功运行?还是我运气不好?

【问题讨论】:

  • 是什么让你想在这里运行 valgrind?当您的程序最初告诉您时,核心转储中的堆栈跟踪是什么?
  • 在 Linux 桌面 PC 上通过 Valgrind 测试代码,而不是试图将其压缩到您的目标上。
  • 或者使用比生产设备更多 RAM 的原型。这是常见的做法。

标签: memory embedded out-of-memory valgrind embedded-linux


【解决方案1】:

可以调整 valgrind 以减少(增加)其 cpu/内存使用量, 具有减少(增加)有关问题/错误的信息的效果。

参见例如https://archive.fosdem.org/2015/schedule/event/valgrind_tuning/attachments/slides/743/export/events/attachments/valgrind_tuning/slides/743/tuning_V_for_your_workload.pdf

但请注意,在 31MB(左右)内运行 valgrind 似乎是一项不可能完成的任务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2021-06-30
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多