我编译了Valgrind对于 ARM 使用 this稍作改动。
按照指定的方法安装到手机上后,出现如下错误:
# /data/local/Inst/bin/valgrind
valgrind: failed to start tool 'memcheck' for platform 'arm-linux': Permission denied
通过更仔细的调查,有可能发现它试图做什么:
# /data/local/Inst/bin/valgrind -d -v
--25068:1:debuglog DebugLog system started by Stage 1, level 1 logging requested
--25068:1:launcher no tool requested, defaulting to 'memcheck'
--25068:1:launcher no client specified, defaulting platform to 'arm-linux'
--25068:1:launcher launching /data/local/Inst/lib/valgrind/memcheck-arm-linux
valgrind: failed to start tool 'memcheck' for platform 'arm-linux': Permission denied
但是,可执行文件在那里并且具有正确的权限:
# ls -l /data/local/Inst/lib/valgrind/memcheck-arm-linux
-rwxrwxrwx root root 9261240 2013-10-28 17:00 memcheck-arm-linux
此外,尝试执行它不会产生任何问题,这也消除了动态链接问题:
/data/local/Inst/lib/valgrind/memcheck-arm-linux
valgrind: You cannot run '/data/local/Inst/lib/valgrind/memcheck-arm-linux' directly.
valgrind: You should use $prefix/bin/valgrind.
在这一点上,我几乎没有想法,任何帮助将不胜感激。
我知道 this similar post ,但我确定(基于带有“-d”的输出)前缀是正确的。
潜在线索:这在之前工作了几个“ROM”-s,但不幸的是,当前的这个与它之前工作的完全相同,具有确切的相同的 Valgrind 构建。
细微改动:由于构建是在 64 位系统上完成的,因此在适当的地方将 _64 附加到工具链路径。我可以发布完整的脚本,但它应该是无关紧要的。可能是著名的遗言。
最佳答案
我最近遇到了完全相同的问题。 在我的设备/data/local/Inst 上,它的所有内容都归一个名为“shell”的用户所有。 奇怪的是,当我尝试以 root 用户执行 valgrind 时,出现上述错误,但只要我以非特权用户登录,我就可以毫无问题地运行 valgrind。
根据您发布的信息,我认为您以 root 用户身份安装了 valgrind,并且我假设您还以 root 用户身份执行了它。
所以这里是让它为我工作的步骤:
- /data/local/Inst 归非特权用户所有
- 用同一个非特权用户安装 valgrind
- 再次以同一用户执行 valgrind
希望这对您有所帮助。
关于android - Valgrind 无法在 Android 操作系统上执行 memcheck 工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19641111/