我使用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附加到工具链路径中。我可以发布完整的脚本,但它应该是无关紧要的。着名的遗言,可能。
答案 0 :(得分:4)
我最近碰到了同样的问题。 在我的设备/ data / local / Inst上,其所有内容都由名为“shell”的用户拥有。 奇怪的是,当我尝试使用root用户执行valgrind时,我得到了上述错误,但是一旦我与非特权用户一起登录,我就可以毫无问题地运行valgrind。
根据您发布的信息,我认为您以root用户身份安装了valgrind,我假设您也以root身份执行了它。
以下是让它为我工作的步骤:
希望这有帮助。
答案 1 :(得分:1)
通常,这表示某些文件(lib或配置文件)缺少您的权限。最有可能的是,当您使用root安装Valgrind时,umask可能会为其他人排除rx。 通过为其他人添加rx权限很容易解决这个问题:
查找/ usr / local -name“* valgrind *” - exec chmod o + rxt {} \;
答案 2 :(得分:-1)
如果您在Android上使用Valgrind,至少有三种方法可以解决问题。 (您必须先安装Android手机。)
在您的电脑上
cmd
adb shell
$su
#cp /data/local/Inst/bin/valgrind /system/bin/
注意:请记住chmod。例如chmod 777 valgrind
。
在您的Android手机上
安装应用" Root Explorer"。使用应用程序将valgrind复制到/system/bin/
。
编写shell脚本
这是一个例子:Can't run a Java Android program with Valgrind
中文评论: 我本人曾不止一次英语考试不及格。写英文回贴真的很不舒服。不过自我学Android开始,就从http://stackoverflow.com这里得到过很多帮助。知恩回报是中华民族的传统美德,所以 就硬首头皮写了这个ë文回贴。