0
点赞
收藏
分享

微信扫一扫

如何移植valgrind到arm开发板

灵魂跑者 2022-04-13 阅读 119
c语言

一些链接

valgrind官网:Valgrind Home

valgrind安装包下载地址:Index of /pub/valgrind

简介

Valgrind是一个用于构建动态分析工具的仪器框架。Valgrind工具可以自动检测许多内存管理和线程错误,并详细分析您的程序。您还可以使用Valgrind构建新工具。

支持的平台

  • x86/Linux: up to and including SSSE3, but not higher -- no SSE4, AVX, AVX2. This target is in maintenance mode now..
  • AMD64/Linux: up to and including AVX2. This is the primary development target and tends to be well supported.
  • PPC32/Linux, PPC64/Linux, PPC64LE/Linux: up to and including Power8.
  • S390X/Linux: supported.
  • ARM/Linux: supported since ARMv7.
  • ARM64/Linux: supported for ARMv8.
  • MIPS32/Linux, MIPS64/Linux: supported.
  • X86/FreeBSD, AMD64/FreeBSD: supported since FreeBSD 11.3.
  • X86/Solaris, AMD64/Solaris, X86/illumos, AMD64/illumos: supported since Solaris 11.
  • X86/Darwin (10.5 to 10.13), AMD64/Darwin (10.5 to 10.13): supported.
  • ARM/Android, ARM64/Android, MIPS32/Android, X86/Android: supported.

另外在Linux上,必须运行内核3.0或更高版本,以及glibc 2.5.X或更高版本。在Mac OS X上,您必须运行10.9.x或更高版本。

主要工具

(1)Memcheck内存错误检测器

(2)Cachegrind缓存和分支预测分析器

(3)Helgrind线程错误检测器

(4)Massif堆分析器。

编译

准备交叉编译工具链

直接用apt-get安装

sudo apt-get install gcc-arm-linux-gnueabihf
sudo apt-get install g++-arm-linux-gnueabihf
sudo apt-get install c++-arm-linux-gnueabihf

也可自行去官网下载压缩包

编译valgrind

下载解压

wget https://sourceware.org/pub/valgrind/valgrind-3.18.1.tar.bz2
tar xvf valgrind-3.18.1.tar.bz2
cd valgrind-3.18.1/

配置

./autogen.sh		# 需要安装automake
vi configure

作如下更改

./configure --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CPP=arm-linux-gnueabihf-cpp CXX=arm-linux-gnueabihf-c++ --prefix=$(pwd)/./output/valgrind_3.18

配置成功

编译

make
make install

编译成功

裁切

因为很多开发板内存空间有限,需要进行裁切,选择自己需要的文件。

筛选后等到满足arm开发板的全功能所需文件,也可根据个人需求,对部分功能对应的文件进行选取。

配置arm开发板上的运行环境

因为测试的可执行文件需要依赖not stripped的动态链接库,但是很多开发板上的系统为了节省空间需要对文件进行strip,那么valgrind将无法成功运行测试可执行文件。

使用patchelf工具对测试文件修改interpreter段

patchelf --set-interpreter /data/app/MAINAPP/data/ld-2.15.so ./Hello

valgrind ./Hello

2.15.是ld.so的版本,Hello是待调试的应用名称

至此,valgrind将可以成功使用。

举报

相关推荐

0 条评论