我正在安装Valgrind但遇到一些问题.我平台的信息:
Linux xx-ThinkPad-X61 3.2.0-39-generic-pae #62-Ubuntu SMP Wed Feb 27 22:25:11 UTC 2013 i686 i686 i386 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
我遵循valgrind文件夹中README文件的安装说明../configure - > make - > sudo make install.
我无法理解README文件中的以下提醒,我只是忽略了它.
Important! Do not move the valgrind installation into a place
different from that specified by --prefix at build time. This will
cause things to break in subtle ways, mostly when Valgrind handles
fork/exec calls.
Run Code Online (Sandbox Code Playgroud)
键入"valgrind ls -l"后,出现错误:
xx@xx-ThinkPad-X61:~/Downloads/valgrind-3.8.1$ valgrind ls -l
==7674== Memcheck, a memory error detector
==7674== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==7674== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==7674== Command: ls -l
==7674==
valgrind: Fatal error at startup: a function redirection
valgrind: which is mandatory for this platform-tool combination
valgrind: cannot be set up. Details of the redirection are:
valgrind:
valgrind: A must-be-redirected function
valgrind: whose name matches the pattern: strlen
valgrind: in an object with soname matching: ld-linux.so.2
valgrind: was not found whilst processing
valgrind: symbols from the object with soname: ld-linux.so.2
valgrind:
valgrind: Possible fixes: (1, short term): install glibc's debuginfo
valgrind: package on this machine. (2, longer term): ask the packagers
valgrind: for your Linux distribution to please in future ship a non-
valgrind: stripped ld.so (or whatever the dynamic linker .so is called)
valgrind: that exports the above-named function using the standard
valgrind: calling conventions for this platform. 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
valgrind:
valgrind: Cannot continue -- exiting now. Sorry.
Run Code Online (Sandbox Code Playgroud)
有人能提出一些建议吗?
谢谢!
ras*_*hok 13
我也遇到了这个错误,但最终以下面的方式解决了.
我有64位Ubuntu 14.04,我的可执行文件是32位.当我用valgrind运行我的32位可执行文件时,我得到了同样的错误.安装libc6-dbg(使用命令apt-get install libc6-dbg)后,此错误仍未解决.
后来我发现libc6-dbg我的机器中出现的任何东西都是64位而valgrind需要32位libc6-dbg来运行我的32位可执行文件.安装32位libc6-dbg(使用命令apt-get install libc6-dbg:i386)后,它开始工作.
apt install -y libc6-dbg
Run Code Online (Sandbox Code Playgroud)
这对我有用。(注:没有 :i386.)
预感是 Valgrind 可能已经升级到 64 位,因为 rashok 的答案已经写好了。
小智 3
Valgrind 指示它无法工作,因为它缺少 libc 调试信息,并且指示必须安装哪个软件包才能解决该问题。对于您的情况(Ubuntu),您必须安装 libc6-dbg