1.进入valgrind目录并编译
原来在makefile中完成的东西,已经被Google完全移植到了Android.mk中。
cd external/valgrind
mm
2.将编译生成的文件放到开发板,并修改权限
adb pushout\target\product\k3v2oem1\system\bin\valgrind /system/bin/
adb pushout\target\product\k3v2oem1\system\lib\valgrind /data/valgrind
chmod 777 /system/bin/valgrind
chmod -R 777 /data/valgrind
3.在adb shell中配置环境变量,并通过valgrind启动目标程序
export VALGRIND_LIB=/data/valgrind
valgrind --tool=memcheck --leak-check=full--show-reachable=yes --undef-value-errors=no -v /system/bin/mediaserver1
在valgrind的新版本中,附带了gdbserver的功能,可以在valgrind中调试程序。
4.在程序退出(通过调用exit、kill等方式)后,valgrind会将分析的结果和堆栈打印出来。如果包含调试信息,valgrind可以将堆栈对应的行号打印出来。
==3857== LEAKSUMMARY:
==3857== definitely lost: 27,357 bytes in 37 blocks
==3857== indirectly lost: 13,654 bytes in 63 blocks
==3857== possibly lost: 8,000 bytes in 115 blocks
==3857== still reachable: 91,644 bytes in 220 blocks
==3857== suppressed: 0 bytes in 0 blocks
valgrind手册中对内存泄漏的描述,一般查看definitely lost的地方
5.valgrind手册
http://www.valgrind.org/docs/manual/index.html