Как запустить valgrind с Android-приложением?
Я установил valgrind для android, и я могу подтвердить, что он работает, когда я пытался запустить ls с ним, и он отлично работает.
Но как я могу выполнить приложение для Android с помощью собственного компонента, который я хотел бы отлаживать? Я посмотрел на этот вопрос: Как запустить приложение Android с valgrind, но я понятия не имею, как следовать ему. Как переносить приложение в оболочку script? Что такое "обертка". за которым следует имя пакета, которое должно быть?
Я пробовал делать это с com.matthewmitchell.wakeifyplus, являющимся моим пакетом приложений:
setprop wrap.com.matthewmitchell.wakeifyplus "logwrapper /data/local/valgrind"
но он говорит: "Не удалось установить свойство". Что я должен сделать? Я не могу найти пошаговое руководство, которое работает. Я попробовал это (я даже не знаю, что делает setprop):
setprop com.matthewmitchell.wakeifyplus "logwrapper /data/local/valgrind"
С/data/local/valgrind является оболочкой script с разрешениями на выполнение, которая:
#!/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, даже после его очистки.
Ответы
Ответ 1
Вы получаете сообщение об ошибке " не может установить свойство", потому что НЕ МОЖЕТЕ установить имя свойства длиной более 31, что является числом максимально допустимых символов в имя свойства: fooobar.com/info/68701/...
Попробуйте уменьшить длину имени пакета до или равным 31 символу при установке свойства с помощью оболочки adb setprop.
И используйте bash script для простых вещей.
Более подробно см. Мой ответ здесь: fooobar.com/info/68692/...