Memory 减少嵌入式目标的Valgrind内存使用

Memory 减少嵌入式目标的Valgrind内存使用,memory,embedded,out-of-memory,valgrind,embedded-linux,Memory,Embedded,Out Of Memory,Valgrind,Embedded Linux,我正在尝试使用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.

我正在尝试使用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可以调整以减少(增加)其cpu/内存使用, 从而减少(增加)有关问题/bug的信息

见例


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

是什么原因导致您首先要运行valgrind?当您的程序最初告诉您时,内核转储中的堆栈跟踪是什么?在Linux桌面PC上通过Valgrind测试代码,而不是试图将其压缩到您的目标上。或者使用内存大于生产设备的原型。这是惯例。