5

我有 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 吗?

4

4 回答 4

2

我已经解决了这个问题。我安装了 32 位 gcc 支持,然后再次构建 valgrind 并创建了 32 位 memcheck。

于 2013-10-28T13:37:23.597 回答
2

我有同样的问题,并通过设置环境变量来解决它:

export VALGRIND_LIB=/YourValgrindInstallDirectory/lib/valgrind

这是 valgrind 缺少 lib 的目录。

于 2015-09-24T12:04:24.693 回答
0

尝试使用以下选项重新运行configure脚本--enable-only32bit

 ./configure --enable-only32bit
于 2013-10-28T13:35:13.773 回答
0

我安装了 32 位版本的 valgrind,现在似乎可以使用了。关于安装32位版本的信息我从这里拿的

于 2017-04-14T08:45:53.813 回答