TX2上通过vld查看程序内存泄漏

151 阅读1分钟

硬件:Tx2
系统:Ubuntu
开发环境:QtCreator

前段时间在Tx2上开发程序的时候,发现程序有内存泄漏,但泄漏量不大,这就很难查。要么从头到尾把代码一行一行检查一遍,要么通过禁用部分代码,然后跑程序,看系统资源监视器上该程序是否内存一直在增加来判定。
问题是内存泄漏量很小的时候,上述两种方法的效率都非常低,后来网上查到可以用 valgrind这个强大的软件来查内存泄漏。在此记录一下:
首先在Tx2上安装 valgrind,打开终端,输入:

sudo apt-get install valgrind

假设自己编写的可执行程序名字为test
在test程序所在文件夹内,右击打开终端,然后如下输入:

valgrind --tool=memcheck ./test

等待程序运行完,在终端中就会显示内存泄漏相关信息。

我们用如下命令获取更详细的程序内存泄漏信息:
valgrind --tool=memcheck --leak-check=full --show-reachable=yes --trace-children=yes ./test

其中
–leak-check=full 是完全检查内存泄漏;
–show-reachable=yes 是显示内存泄漏的地点;
–trace-children=yes是跟入子进程