我有32位C应用程序(在64位系统上运行)泄漏内存。
调试它我从http://valgrind.org/downloads/下载了valgrind 3.8.1。 是./configure,make和make install来安装valgrind。
但是valgrind只构建了64位memcheck-amd64-linux二进制文件。 32位memcheck没有建成。
因此我得到以下错误
# valgrind --tool=memcheck --time-stamp=yes -v --track-origins=yes --leak-check=yes /home/test_code32 --error-limit=no
valgrind: failed to start tool 'memcheck' for platform 'x86-linux': No such file or directory
屈服于valgrind给了我:
execve("/usr/local/lib/valgrind/memcheck-x86-linux", ["valgrind", "--tool=memcheck", "--time-stamp=yes", "-v", "--track-origins=yes", "--leak-check=yes", "/home/test_code32", "--error-limit=no"], [/* 60 vars */]) = -1 ENOENT (No such file or directory)
write(2, "valgrind: failed to start tool '"..., 94valgrind: failed to start tool 'memcheck' for platform 'x86-linux': No such file or directory
) = 94
我检查了./configure输出,它说:
checking for 32 bit build support... no
我正在使用gcc(SUSE Linux)4.3.4。
任何想法如何让valgrind在64位机器上构建32位memcheck?
答案 0 :(得分:2)
我已经解决了这个问题。 我安装了32位gcc支持,然后再次构建了valgrind,它创建了32位memcheck。
答案 1 :(得分:1)
我遇到了同样的问题,并通过设置环境变量解决了这个问题:
export VALGRIND_LIB=/YourValgrindInstallDirectory/lib/valgrind
这是valgrind缺少lib的目录。
答案 2 :(得分:0)
尝试使用configure
选项重新运行--enable-only32bit
脚本:
./configure --enable-only32bit
答案 3 :(得分:0)
我安装了32位版本的valgrind,它现在似乎有效。有关安装32位版本的信息,我是从here
获取的