Ubuntu: valgrind: 无法为平台 'memcheck' 启动工具 'amd64-linux': 没有那个文件或目录

Ubuntu: valgrind: failed to start tool 'memcheck' for platform 'amd64-linux': No such file or directory

我安装了 valgrind 没有问题,但是当 运行 它时,我不断收到以下错误:

valgrind: failed to start tool 'memcheck' for platform 'amd64-linux': No such file or directory

我已经相应地调整了我的 bash 文件。我添加了以下路径:/usr/bin/valgrind from using: which valgrind 命令,但它仍然无法正常工作。然后我添加了路径:/usr/lib/valgrind 但它仍然无法正常工作。我想我对使用 Ubuntu.

的正确本地目录感到困惑

我正在使用:

export VALGRIND_LIB="/usr/lib/valgrind"

我必须先添加我的本地目录吗?

您不需要设置任何环境变量,除非您正在处理 Valgrind 本身的代码。

只是 运行 /usr/bin/valgrind。然后,这将 运行 /usr/lib/valgrind/memcheck-amd64-linux 并在同一目录中预加载一些 .so 文件。

我对 Debian/Ubuntu 没有太多经验,但如果你用 snap 安装它,那么 afaict 你应该使用 --classic 选项。

将“导出 VALGRIND_LIB=/usr/lib/valgrind/”(或 /usr/local/lib/valgrind/ 或您安装 valgrind lib 的其他位置)添加到 ~/.bashrc

export VALGRIND_LIB=<where libexec/valgrind is|where massif-arm64-linux is>

尝试 运行 使用“sudo”,对我来说很有帮助。

还要确保您对 64 位可执行文件使用 64 位 valgrind,在 64 位 exe 上使用 32 位 valgrind 会导致此错误

/tmp>file /usr/bin/valgrind /usr/bin/valgrind: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

/tmp>file a.out a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

/tmp>valgrind a.out valgrind: failed to start tool 'memcheck' for platform 'amd64-linux': No such file or directory

我从源代码构建了 valgrind,发布的答案对我不起作用,但这确实有效:

例如我是如何配置的:

./configure --prefix=$HOME/local/valgrind

我添加到我的 ~/.bashrc

export VALGRIND_LIB=$HOME/local/valgrind/libexec/valgrind

似乎需要 libexec,而不是 lib