一些链接

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#--build: 编译所用的机器的平台
#--host:编译出的可执行文件运行的平台
#--target:编译出来的工具链生成的可执行文件运行的平台,一般在编译gcc、ld等工具的时候才使用

配置成功

编译

make
make install

编译成功

裁切

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

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

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

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

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

所以需要通过一些手段改变可执行文件的interpreter段。比如在编译时指定,或者使用patchelf工具。

下载arm版对应的安装包解压即可直接使用

https://github.com/NixOS/patchelf/releases

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

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

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

如何移植valgrind到arm开发板相关推荐

  1. 编译ARM平台的 QtEmbedded 的MySQL插件和移植MySQL到ARM开发板

    经过几天的努力,终于交叉编译出了arm平台所需Qt/E的MySQL插件(驱动),其中顺便把MySQL也移植到了mini2410的开发板上. 编译器:arm-linux-gcc(4.3.2) Pc平台: ...

  2. mplayer linux arm,【嵌入式】交叉编译移植 Mplayer 到 ARM开发板

    一.基本信息 1.移植环境 ①:ubuntu16.04 ②:iMX6Q开发板 2.移植所需软件源码 ①:libmad libmad 下载 ②:mplayer mplayer下载 ③:百度网盘下载: 链 ...

  3. java arm_移植java到arm开发板

    1. 在主机linux上安装Oracle Java SE Embedded 下载Oracle Java SE Embedded软件包 本次使用ejdk-8u211-linux-armv6-vfp-hf ...

  4. 移植安装ModBus到ARM开发板

    1.libmodbus官网 2.下载 二.交叉编译 1.解压 2.创建安装目录 3.进入解压的目录 4.配置编译选项 5.编译 6.安装 7.生成动态链接库 三.移植到ARM开发板 1.复制文件到AR ...

  5. [2021]Linux下C语言qrencode二维码生成库的基本使用和ARM开发板移植

    文章目录 一.前言 二.准备所用到的环境以及版本信息 1.Ubuntu和内核版本 2.gcc和g++版本 3.交叉编译gcc和g++版本 4.开发板信息 三.开发环境编译&安装qrencode ...

  6. linux adb arm移植,移植ubuntu core到Arm开发板

    origin: http://blog.csdn.net/kickxxx/article/details/15341079 最初是想把整个ubuntu移植到MX51开发板,因为项目不需要运行桌面系统, ...

  7. 将linux内核烧进arm板,ARM开发板上uClinux内核移植

    <ARM开发板上uClinux内核移植>由会员分享,可在线阅读,更多相关<ARM开发板上uClinux内核移植(19页珍藏版)>请在人人文库网上搜索. 1.纷傲掌秀悸篷益哑檀扬 ...

  8. Openssl移植到ARM开发板

    Openssl移植到ARM开发板 openssl源码下载 源码编译配置 使用生成的库文件 openssl源码下载 openssl源码可以在官网下载:https://www.openssl.org/so ...

  9. arm开发板移植ALSA库与ALSA工具

    目录 首先我们需要下载两个所要用到的库文件(基于Ubuntu) 一:先配置ALSA库文件 1.先解压放到家目录下ALSA的源文件: 2.解压后进去解压得到的文件夹执行以下命令: 3.配置好以后执行 二 ...

最新文章

  1. python特效进度条_六种酷炫Python运行进度条
  2. 三、Bean的初始化
  3. 计算机专业和学历的关系!!重要!!
  4. BST(Binary Search Tree 二叉查找树模版)
  5. mybatis-plus sql注入原理
  6. MySql 存储过程实例(附完整注释)
  7. IDEA将项目上传至码云/GitHub托管
  8. kerberos 主从安装
  9. C#获取存储过程的 Return返回值和Output输出参数值
  10. 第一节: Timer的定时任务的复习、Quartz.Net的入门使用、Aop思想的体现
  11. jstree 点箭头有效但点后面item无效的bug
  12. APP如何进行通信的
  13. 《团队作业第三、第四周》五小福团队作业--Scrum 冲刺阶段--Day1--领航
  14. 2021-12-06
  15. 模拟电路仿真LTspice(2):三极管特性曲线
  16. Modbus功能码及错误码说明
  17. Freesurfer学习笔记——Introduction to Freesurfer Output(输出简介)
  18. python 提示按任意键退出_详解Python实现按任意键继续/退出的功能 python请按任意键继续 什么意思...
  19. Revit 参数说明
  20. 错误码400原因总结

热门文章

  1. SkeyeWebPlayer.js H5播放器是怎么样炼成的
  2. ListView滑动删除 ,仿腾讯QQ
  3. 【PMP考试秘笈】第二式:PMP 考试工具技术常见翻译问题
  4. Hyperledger Fabric1.4 多机部署(尚有问题暂未解决)
  5. 电商网站 首页三级分类的分类检索 vue前端关键代码
  6. 为什么学到现在任然对计算机浑然不知???门外汉??? 对其运行机制不能理解?
  7. 2022业界广告推荐技术最新进展与趋势:阿里、腾讯、字节、微软
  8. August, 24(R)
  9. SpringCloud —— Config 配置中心
  10. 开源O2OA办公平台:手写签批介绍