valgrind交叉编译,检测内存泄漏、越界访问、野指针访问实验

Ubuntu20.04安装valgrind_ubuntu安装valgrind-CSDN博客

交叉编译valgrind(9x07)_valgrind交叉编译-CSDN博客
【C/C++ 集成内存调试、内存泄漏检测和性能分析的工具 Valgrind 】Linux 下 Valgrind 工具的全面使用指南 - 知乎

sudo apt-get install automake
sudo apt-get install autoconf
 
cd valgrind-3.19.0
./autogen.sh
./configure
make -j4
sudo make install


# 配置编译环境
arm-oe-linux-gnueabi
arm-oe-linux-gnueabi-gcc

./configure --host=arm-oe-linux-gnueabi CC=arm-oe-linux-gnueabi-gcc CPP=arm-oe-linux-gnueabi-cpp CXX=arm-oe-linux-gnueabi-g++ AR=arm-oe-linux-gnueabi-ar LD=arm-oe-linux-gnueabi-ld --prefix=$PWD/valgrind

make -j4
# install也可以指定目录 make -j4 install  DESTDIR=`pwd`/valgrind 
make -j4 install

会在 --prefix 指定的目录下生成四个子目录:bin、include、lib、libexec 和 share,我们需要的 valgrind 工具就在其中的bin目录下。

 # 然后配置环境变量,本次有效,方便直接使用命令
export PATH="$PATH:/root/valgrind_xx/bin"
# 配置工具库变量
export VALGRIND_LIB="/root/valgrind_xx/lib"

./valgrind   --version

3.1 拷贝到设备并设置环境变量

动态库在valgrind/libexec/valgrind里面,所以把valgrind/libexec/valgrind中所有文件拷贝到valgrind/lib,可以把不用的删掉,比如静态库之类的,然后打包bin和lib并推送到设备就行了。

# 先拷贝到/mnt/sdidk/valgrind目录下,目录自己定
tar -czvf valgrind.tar.gz valgrind/bin/* valgrind/lib/*
adb push valgrind.tar.gz /mnt/sdisk/valgrind
cd /mnt/sdisk/valgrind && tar -zxvf valgrind.tar.gz

# 然后配置环境变量,本次有效,方便直接使用命令
export PATH="$PATH:/mnt/sdisk/valgrind/bin"
# 配置工具库变量
export VALGRIND_LIB="/mnt/sdisk/valgrind/lib/valgrind"

3.2 执行

可输入以下指令测试 valgrind 是否可以正常运行,如果出现一大堆选项解释,则表示成功

valgrind --version
valgrind-3.20.0

通过检查内存泄漏的问题使用(./sample为可执行程序名,为了使valgrind发现的错误更精确,建议在编译时加上-g参数,编译优化选项请选择O0):

valgrind -v --error-limit=no --leak-check=full --tool=memcheck ./sample

nohup valgrind -v --error-limit=no --leak-check=full --tool=memcheck ./xxxx >/xxx.log 2>&1 &

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值