需要检测Linux中一个应用程序长时间运行是否有memory leak,使用valgrind进行测试。
command: valgrind --tool=memcheck ./main
- 安装valgrind
ssh登录target,修改opkg.conf文件:
vi /etc/opkg/opkg.conf
src/gz OE-arm http://git.natinst.com/feed/armv7a-vfp-neon
src/gz OE-zynq http://git.natinst.com/feed/xilinx_zynq
src/gz OE-all http://git.natinst.com/feed/all
src/gz uri-cortexa9-vfpv3-0 http://download.ni.com/ni-linux-rt/feeds/2016/arm/ipk/cortexa9-vfpv3
arch armv7a-vfp-neon 9
arch xilinx_zynq 8
arch all 1
arch cortexa9-vfp 71
arch cortexa9-vfpv3 76
opkg update
opkg install valgrind
valgrind --version
- 如果有必要,更新daemon程序
- 设置host端环境变量
nislsc_SOCKET_TYPE=TCP
- 将debug文件放入valgrind安装目录
mkdir /usr/lib/valgrind/.debug
vgpreload_massif-arm-linux.so
vgpreload_memcheck-arm-linux.so
- 停止当前运行的daemon,用valgrind启动daemon
etc/init.d/nislscd stop
cd /usr/local/natinst/bin
chown root nislscd
valgrind --num-callers=20 ./nislscd -w --socket-type=TCP 2>&1 | tee valgrind-memcheck.log
- 停止运行,查看leak log
ps | grep slsc
kill -SIGTERM