红联Linux门户
Linux帮助

Valgrind:failed to start tool 'memcheck' for platform 'x86-

发布时间:2016-03-19 11:12:18来源:linux网站作者:迎仔

问题

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的版本。)


本文永久更新地址:http://www.linuxdiyf.com/linux/19072.html