如何运行Valgrind来查找我的嵌入式MIPSEL-linux盒子上的内存泄漏?

SHR*_*SHI 0 valgrind mips embedded-linux

如何在嵌入式Linux机器上运行valgrind来查找主软件中的内存泄漏?

rcS脚本中,我运行如下:

./main_app
Run Code Online (Sandbox Code Playgroud)

如何将./main_app程序与valgrind联系起来?main_app进程永远不会终止.

我想不断将数据记录到文件中.此外,我想访问日志文件而不终止该main_app过程.我可以做telnet并可以访问日志文件.但问题是,除非处理程序关闭,我怎么能打开文件,即我不太明白哪个valgrind参数控制如何将内存泄漏记录到文件中.请帮忙!

Jur*_*sic 6

您可以尝试用自己的mips来构建它,这里的步骤:从这里下载valgrind http://valgrind.org/downloads/ - 我使用Valgrind 3.8.1 unpack archive with valgrind并移动到valgrinds文件夹执行:

./autogen.sh
./configure --host=mipsel-linux-gnu --prefix=/home/pub/valgrind CFLAGS="-mips32r2" CC=/opt/toolchains/mips-4.3/bin/mips-linux-gnu-gcc CXX=/opt/toolchains/mips-4.3/bin/mips-linux-gnu-c++
./make -j6
./make install
Run Code Online (Sandbox Code Playgroud)
  • prefix - 用于安装valgrind的已编译二进制文件的文件夹;
  • CCCXX - 编译器的路径;
  • CFLAGS - "-mips32r2"和"-mplt"标志应该传递给编译器,如果它早于gcc(GCC)4.5.1

在目标mips框导出到valgrind lib文件夹的路径:

export VALGRIND_LIB=/mnt/nfs/lib/valgrind
Run Code Online (Sandbox Code Playgroud)

现在你可以像往常一样使用它,你可以在这里查看内存检查功能http://valgrind.org/docs/manual/mc-manual.html 它对我有用,祝你好运.