2013-10-28 139 views
4

我編寫了Valgrind ARM,使用this進行了較小的修改。Valgrind無法在Android操作系統上執行memcheck工具?

安裝在手機中規定的方法後,我收到以下錯誤:

# /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 

此外,t rying執行它的產量沒有問題,這消除了動態鏈接的問題,以及:

/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

你解決了這個問題嗎?- 12516:1:啓動器啓動/ data/local/Inst/lib/valgrind/memcheck-arm64 -linl valgrind:無法啓動平臺'arm64-linux'的工具'memcheck': – Tama

回答

4

我最近遇到了完全相同的問題。 在我的設備/ data/local/Inst及其所有內容由名爲「shell」的用戶擁有。 奇怪的是,當我嘗試用root用戶執行valgrind時,我得到了上述錯誤,但只要我用非特權用戶登錄,就可以運行valgrind而不會出現任何問題。

從你發佈的信息,我認爲,你安裝valgrind作爲root用戶,我假設你也以root身份執行它。

因此,這裏是得到它的工作對我來說步驟:

  • /數據/本地/研究所是由一個非特權用戶擁有
  • 用相同的非特權用戶安裝的valgrind
  • 再次,執行valgrind與同一用戶

希望這會有所幫助。

+0

您可能有興趣setuid和setgid標誌http://linuxg.net/how-to-set-the-setuid-and-setgid-bit-for-files-in-linux-and-unix/ – bitek

+0

您是否已在真實設備上得到確認? – Tama

-1

如果你在Android上使用Valgrind,至少有三種方法可以解決這個問題。 (您必須先剷除你的Android手機。)

在PC

cmd 
adb shell 
$su 
#cp /data/local/Inst/bin/valgrind /system/bin/ 

注意:請記住和chmod。例如chmod 777 valgrind

在Android手機

安裝一個應用程序 「根資源管理器」。用應用程序將valgrind複製到/system/bin/

寫shell腳本

這是一個例子:Can't run a Java Android program with Valgrind

中國點評: 我本人曾不止一次英語考試不及格寫英文回貼真的很不舒服不過自我學Android Android開始,就從http://stackoverflow.com這裏得到過很多幫助。知恩回報是中華民族的傳統美德,所以 就硬首頭皮寫了這個E文回帖。

0

通常情況下,表示s ome文件(lib或配置文件)缺乏對您的許可。大多數情況下,當你用root安裝Valgrind時,umask可能會將rx排除在外。 很容易通過增加對他人的RX權限解決這個問題:

發現在/ usr /本地-name 「* * Valgrind的」 -exec搭配chmod O + RXT {} \;

相關問題