Valgrind无法在Android OS上执行memcheck工具?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Valgrind无法在Android OS上执行memcheck工具?相关的知识,希望对你有一定的参考价值。

我使用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

希望这可以帮助。

另一答案

通常,这表示某些文件(lib或配置文件)缺少您的权限。最有可能的是,当您使用root安装Valgrind时,umask可能会为其他人排除rx。通过为其他人添加rx权限很容易解决这个问题:

find / usr / local -name“* valgrind *” - exec chmod o + rxt {} ;

另一答案

如果您在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

Chinese Comments: 我本人曾不止一次英语考试不及格。写英文回贴真的很不舒服。不过自我学Android开始,就从http://stackoverflow.com 这里得到过很多帮助。 知恩回报是中华民族的传统美德,所以 就硬首头皮写了这个E文回贴。

以上是关于Valgrind无法在Android OS上执行memcheck工具?的主要内容,如果未能解决你的问题,请参考以下文章

valgrind mac os sierra 10.12.1

Ubuntu上通过android toolchain交叉编译Valgrind操作步骤

valgrind/callgrind 可以在发布的可执行 C++ 程序上工作吗?

freeglut 无法使用 valgrind 打开显示

android.os.NetworkOnMainThreadException

国产手机插入mac os 系统中无法被识别的解决方法