1

我正在尝试在我的 32 位可执行文件(示例)上运行 valgrind 工具,我在 linux Ubuntu 主机 16.04(64 位)下构建,但它无法运行,错误:错误 ELF。

示例应用程序构建为在 arm32 中运行,在我的主机 linux 机器中交叉编译。

这是我运行的命令。

valgrind --tool=callgrind ./sample
valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
valgrind: ./sample: cannot execute binary file

我运行了 memcheck 工具,但也失败了。

valgrind --tool=memcheck ./updater 
valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
valgrind: ./updater: cannot execute binary file

然后我做了什么,我导出了 valgrind lib 路径,但这没有帮助+

$export VALGRIND_LIB="/usr/lib/valgrind"

我只是我的 lib 目录,我找到了整个列表并找到了 callgrind,所有的库都在那里。

callgrind-amd64-linux          
callgrind-x86-linux

不知道出了什么问题以及如何在我的可执行文件上使用 valgrind。

任何帮助,不胜感激。

4

1 回答 1

1

Valgrind 不支持“主机”(运行 valgrind 的地方)与“来宾”(在 valgrind 下运行的应用程序)不同的设置。

因此,无法在 x86/amd64 系统上的 Valgrind 下运行 arm32 应用程序。

您应该在 arm32 系统上运行它,并为 arm32 编译 valgrind。或者,您可以使用例如 android 模拟器。有关更多信息,请参阅 Valgrind 发行版中的 README.android 和 README.android_emulator

于 2017-03-15T19:48:53.753 回答