问题
1.通过./configure –prefix=/where/you/want/to/install将Valgrind安装到自己希望的目录
2.安装Valgrind-3.11.0后命令行中输入valgrind 无法运行(没有添加环境变量)
3.添加环境变量后出现:Valgrind:failed to start tool 'memcheck' for platform 'x86-linux': No such file or directory
解决方法
本人环境:Ubuntu 14.04 32bit 安装 Valgrind-3.11.0
安装方法:
1.到www.valgrind.org下载最新版valgrind-3.11.0.tar.bz2
2.解压安装包:tar –jxvf valgrind-3.11.0.tar.bz2
3.解压后生成目录valgrind-3.11.0
4.cd valgrind-3.11.0
5.运行./autogen.sh设置环境(需要标准的autoconf工具)(可选sudo apt-get install autoconf)
6../configure;配置Valgrind,生成MakeFile文件,具体参数信息详见INSTALL文件。一般只需要设置--prefix=/where/you/want/it/installed
7.make;编译Valgrind
8.sudo make install;安装Valgrind
以上安装过程中:
不设置–prefix Valgrind会自动安装到/usr/local下,多出bin、inclu、lib、share四个目录,如果想卸载需要分别删除;所以我通过设置在/local下新建了一个valgrind 文件夹来作为安装目录;即配置命令为:
./configure --prefix=/usr/local/valgrind
可能遇到的问题
最初想将Valgrind安装到/home下新建的/valgrind目录(--prefix=/home/**用户名/valgrind),可是安装后Valgrind在终端中无法正常不全,找不到!
解决方法:后来发现没有将/home/**用户名/valgrind/bin加入环境变量中。
操作:
vim ~/.bashrc
export PATH=$PATH:/home/**用户名/valgrind/bin
自动不全问题解决!
新问题:valgrind ls -l
提示:Valgrind:failed to start tool 'memcheck' for platform 'x86-linux': No such file or directory
网上现有解决方法:
1.valgrind提示 failed to start tool 'memcheck' for platform 'x86-linux'
想在服务器VM(64位)上查看server程序(my_svr)的内存泄露,安装了valgrind,用
valgrind --tool=memcheck --leak-check=yes ./my_svr
运行的结果是:
valgrind: failed to start tool 'memcheck' for platform 'x86-linux': no such file or directory
搜索了很久,最终发现,这条提示挺糊弄人的,其实不是找不到memcheck,而是 my_svr 程序是32位的,而这台VM是安装的 valgrind 是64位的造成 valgrind 运行失败。验证如下:写一个小程序,分别在32位机器和64位机器上build,将build的binary (leak.32, leak.64)拷贝到那台VM上,结果,
valgrind --tool=memcheck --leak-check=yes ./leak.64
成功分析了内存泄露,而
valgrind --tool=memcheck --leak-check=yes ./leak.32
报告和上面一样的错误。卸载 64位valgrind, 重新安装32位 valgrind,结果
valgrind --tool=memcheck --leak-check=yes ./leak.32
成功分析了内存泄露,而valgrind --tool=memcheck --leak-check=yes ./leak.64
报告相同的错误。
#include <stdlib.h>
void f()
{
int* x = (int*)malloc(10 * sizeof(int));
x[10] = 0;
}
int main()
{
f();
return 0;
}
附:
1) 安装valgrind: 下载完整版的valgrind rpm包,即不要那种还有其他 dependency 的rpm包 (xxxx.rpm),然后 rpm -hiv xxxx.rpm
注意,安装新版本前,要先卸载先前安装的版本,避免造成不必要的麻烦
2) 用命令 "file xxxx" 可以查看文件 xxxx 的信息,比如是多少位的 ……
2.另一种方法,我没尝试;.bashrc中添加环境变量:VALGRIND_LIB="/my/local/directory/lib/valgrind"
export VALGRIND_LIB
由于我后来将目录配置为了/usr/local/valgrind,然后将/usr/local/valgrind/bin添加到环境变量中。这样没有再出现上面错误。
安装过程中可能还会遇到:make install 后好多make[] leaving directory***/docs
这些没有关系!
(在安装Valgrind的时候ubuntu下可以直接:sudo apt-get install valgrind 不过安装的好像是3.10的版本。)