2013-09-25 29 views
11

我已经安装了valgrind for android,我可以确认它正在工作,因为我试着用它运行ls,它工作正常。如何使用Android应用运行valgrind?

但我如何执行一个本机组件的Android应用程序,我想调试?我看了这个问题:How to start an android app with valgrind但我不知道如何遵循它。如何将应用程序包装在shell脚本中?什么是“包装”。其次是包名应该是?

我试图与com.matthewmitchell.wakeifyplus是我的应用程序包这样做:

setprop wrap.com.matthewmitchell.wakeifyplus "logwrapper /data/local/valgrind" 

,但它说:“无法设置属性”。我应该做些什么?我找不到任何一步一步的指导工作。我曾尝试这个(我甚至不知道setprop做什么):

setprop com.matthewmitchell.wakeifyplus "logwrapper /data/local/valgrind" 

随着/数据/本地/ Valgrind的是一个shell脚本执行权限是:

#!/system/bin/sh 
VGPARAMS='--error-limit=no' 
export TMPDIR=/data/data/com.matthewmitchell.wakeifyplus 
exec /data/local/Inst/bin/valgrind $VGPARAMS $* 

但是,当我运行应用程序:

am start -a android.intent.action.MAIN -n com.matthewmitchell.wakeifyplus/.MainActivity 

valgrind即使在清除后也不会显示在logcat中。

回答

7

你得到错误“不能设置属性”因为你不能设置属性名称,长度超过31更大,这是在属性名的数量最大允许的字符:https://stackoverflow.com/a/5068818/313113

尝试当您使用adb shell setprop设置属性时,将包名长度减少到小于或等于31个字符。
并使用bash脚本来简单的事情。
有关更多详细信息,请参阅我的答案:https://stackoverflow.com/a/19235439/313113

+0

非常感谢。我现在看看这个... –

+0

它的工作!这是非常非常缓慢,但它的作品。 –

+0

以及在我们想要在不属于我们的应用程序上运行它的情况下会发生什么?无论如何解决31字符限制 – Paschalis