Ubuntu 12.04.5(64bit) valgrind的安装、缺少libc6-dbg的解决办法以及移植到arm-Linux嵌入式设备的步骤

一、下载:
http://valgrind.org/downloads/current.html
二、解压:
#tar -jxvfvalgrind 3.11.0.tar.bz2
三、安装

#cd valgrind-3.11.0

#./autogen.sh
备注:如果没有安装autotool则要先安装
#apt-get   install   autoconf
#./configure--prefix=/usr/local/webserver/valgrind
#make
#make install
#vi /etc/profile

在最后添加:

export PATH=${PATH}:/usr/local/webserver/valgrind/bin

#source /etc/profile

四、使用
valgrind --leak-check=full --show-reachable=yes ./dns_cap
五、问题
valgrind:  Fatal error at startup: a function redirection
.......
The package you need
valgrind:  to install for fix (1) is called
valgrind: 
valgrind:    On Debian, Ubuntu:                 libc6-dbg
valgrind:    On SuSE, openSuSE, Fedora, RHEL:   glibc-debuginfo
原因:缺少库 libc6-dbg
六、解决
sudo apt-get install libc6-dbg
出错:
The following packages have unmet dependencies:
  libc6-dbg: Depends: libc6 (= 2.11.1-0ubuntu7) but 2.11.1-0ubuntu7.10 is to be installed
E: Broken packages
原因:
软件源中libc-dbg的版本,依赖libc6 (= 2.11.1-0ubuntu7),但系统中已安装的是2.11.1-0ubuntu7.10
方案:
到官方网站下载与系统已安装libc6相对应的libc-dbg
http://packages.ubuntu.com/lucid-updates/libc6-dbg
安装:dpkg -i libc6-dbg_2.11.1-0ubuntu7.10_amd64.deb
七、使用参数
1.--tool= [default=memcheck]
--tool参数指明所要使用valgrind的哪一个工具,默认的为memcheck。因为 大多数情况下我们只会用到memcheck工具,因此该参数可以不写。
2.--leak-check=[default:summary] 
在退出时检查是否有泄漏。
Summary只是告诉我们有多少次泄漏,yes或full会告诉我们每次泄漏的详细信息。
3.--show-reachable=[default:no]  
通过设定该参数为yes,则显示still reachable类型的内存泄漏信息
  

编译在arm版本的Valgrind

1.到官网http://valgrind.org/downloads/current.html#current下载Valgrind (目前的版本是3.8.1 2012-12-6)

2. 在Valgrind 代码解压目录执行/autogen.sh

执行不了 最后也能编译通过

3.在Valgrind 目录执行./configure --host=arm-linux --prefix=/opt/valgrind,提示以下错误

checking for a supported CPU... no (arm)
configure: error: Unsupported host architecture. Sorry

解决方法修改configure脚本

具体应该在检查host_os变量里加入匹配arm条件就行了,如原有的armv7*)改成armv7*|arm)

参考网址:http://bbs.chinaunix.net/thread-3557792-1-1.html

先查找交叉编译

再设置环境变量;

export CC=/dir/arm-none-linux-gnueabi-gcc

ubuntu下 mkdir /opt/valgrind目录 并修改权限 不然不能安装

4.make && make install

正常执行完后,就会把Valgrind安装到/opt/valgrind目录下


注意:--prefix=/opt/valgrind指定的目录要与开发板上放置的目录一致,不然运行valgrind时可能会出现:

“valgrind: failed to start tool 'memcheck' for platform 'arm-linux': No such file or directory”错误。

valgrind --tool=memcheck --leak-check=full ./t

就是在你的dev machine上编, 然后把 valgrind 应用程序 以及它要用的一坨lib copy到target机器上。那坨库很大,200多M ,不过如果你只用 memcheck,那就会少很多了。



你可能感兴趣的:(Ubuntu 12.04.5(64bit) valgrind的安装、缺少libc6-dbg的解决办法以及移植到arm-Linux嵌入式设备的步骤)