android - Valgrind 无法在 Android 操作系统上执行 memcheck 工具?

标签 android permissions valgrind

我编译了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/

相关文章:

Git 以错误的用户身份推送到远程 GitHub 存储库

javascript - 避免从其他网站加载我的 js/css 文件

c - Valgrind 无法在 MacOS Mojave 上运行?与 conda 一起安装

android - 我的 MenuItem 的 getActionView() 在 AppCompat 中返回 null

android - 蓝牙聊天不工作

android - 如何在android中实现UI自动化?

android - 简单触摸或点击时未选择输入

android - 向 Mifare Classic 1k NFC 标签写入和读取数据

c++ - 了解 Valgrind 输出

c - 内存泄漏释放 g_strdup