valgrind安装与使用 交叉编译

valgrind

关于valgrind

valgrind 是一个侦测框架,用来构建动态分析工具。工具有:侦测内存管理和线程bug,分析(profile,真不知道怎么翻译…)程序构架。—— http://valgrind.org/

最常用的工具是memcheck,检测内存泄漏,非法写入,踩内存等等,优点是不用review代码,缺点是速度慢,耗内存,原因在下文会指出。

原理

其核心原理就是复制,通过模拟程序的内存空间和处理器环境,将这些信息放在两张表里,根据两张表,分析内存问题

  • Valid-Value 表:

    对于进程的整个地址空间中的每一个字节(byte),都有与之对应的 8 个 bits;对于 CPU 的每个寄存器,也有一个与之对应的 bit 向量。这些 bits 负责记录该字节或者寄存器值是否具有有效的、已初始化的值。

  • Valid-Address 表

    对于进程整个地址空间中的每一个字节(byte),还有与之对应的 1 个 bit,负责记录该地址是否能够被读写。

参考 应用 Valgrind 发现 Linux 程序的内存问题 (文章有些东西过时,和现有valgrind版本对不上)

安装

关于valgrind怎么使用,有很多文章介绍,参考1的内容就不错。valgrind的安装符合unix标准

  • configure
  • make
  • make install

下载
http://valgrind.org/ 下载最新的valgrind源码

编译
本地编译
tar -zxvf valgrind-3.12.0.tar
./config --prefix=/where/you/what/install/  ##指明在你要安装的目录,不指明也可以
make
make install
## 如果你的编译环境是x86或者mips,是没问题的,如果你的电脑安装的linux发行版,libc的release版本,那么你需要重新安装glibc库的debug版本

##测试下 ls -l 程序
valgrind ls -l
## 如果遇到其他问题,可以查看解压包下的RAEDME_PAKAGE文档
##(学习工具最好的方式就是阅读开发者文档了)
交叉编译
##如果你的开发板,处理器架构是arm类型这里需要改下configure文件
vi configure
#将里面的armv7改为 armv7 | arm,不然make的是时候会报错,不认识的处理器架构

##假设我的开发板是arm-hisiv400-linux
##指定编译器和归档、链接器
export CC=arm-hisiv400-linux-gccexport 
export AR=arm-hisiv400-linux-ar
export LD=arm-hisiv400-linux-ld

##指定目标版类型为arm,安装路径,如果你的开发板是32位,pc是64
位,需要加--enable-only32bit
./config --host=arm-hisiv400-linux \
    --prefix=/home/xiaoming/valgirnd-install/
    --enable-only32bit \
make
make install




##shell登录到开发板上
##两种方式 1.你需要把刚才制定的安装目录整个copy出来,用任意方
##式,想办法copy到user/lib 或者lib目录下,环境变量可以找到就
##行(没有尝试过)
##  2. 建议用mount的方式,少占用硬盘空间,特别是嵌入设备

mount -o nolock 192.168.11.11:/home/xiaoming/ /mnt
cd /home/xiaoming/valgirnd-install/
export VALGRIND_LIB=./valgrind-lib/lib/  ##记不太清楚了
./valgrind ls -l 

##我在安装的时候遇到了这个问题,报错说ld.so 没有找到,需要安装
##libc-debug版本,先前以为valgrind 会应libc源码编译出对应
##的处理器版本,中午睡觉的时候推到,他肯定是依赖 /lib/ld.so,并不是自己编译ld.so,
##那肯定是这样了,不软两个不同版本的libc,不久乱套了

## 去看了README_PACKET,里面讲了valgrind唯一依赖的外部库就是ld.so,
##但是它一定是有符号表的,即debug版本。 但是我们的开发板是
##release版本,果然我成debug版本的linux,运行ok

后续

今天先写到这里,后续写一些vgdb 调试方法,和一些其他功能和文档再放出来,有任何地方不对欢迎指出,或者Email我 monic77@126.com交流

.

目录

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值