Как запустить приложение для Android с valgrind - PullRequest
24 голосов
/ 03 февраля 2012

Я искал последнюю неделю, пытаясь найти ответ на этот вопрос.

Как запустить приложение для Android с valgrind?Я знаю, что могу запустить приложение с помощью команды «am», но оно запускает приложение и завершает работу.

Я пишу приложение, которое использует NDK для собственного кода C, и мне нужно проверить его на наличиеПодозреваемые ошибки памяти.

Редактировать:

Я узнал немного больше.Вы можете "обернуть" приложение сценарием оболочки.

Вот сценарий оболочки, который я использую:

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

А вот setprop:

adb shell setprop wrap.com.starlon.froyvisuals "logwrapper valgrind"

вот как я запускаю приложение:

adb shell am start -n com.starlon.froyvisuals/.FroyVisuals

Я не думаю, что это правильно, потому что я не уверен, куда входит сценарий оболочки, и я не вижу ничего в logcat.Любые советы?

Edit2: О сценарий оболочки указывается с помощью команды "setprop" выше.Так что

adb shell setprop wrap.com.starlon.froyvisuals "logwrapper /data/local/val.sh"

Я до сих пор не вижу ничего в logcat.

Ответы [ 3 ]

6 голосов
/ 13 марта 2012

Вы можете сначала попытаться очистить logcat

prompt# adb logcat -c
prompt# adb logcat

Вы сможете увидеть журналы, поступающие после запуска приложения.

am start -a android.intent.action.MAIN -n com.example.hellojni/.HelloJni

У меня были проблемы с моимсценарий оболочки, и я использовал это вместо.

adb shell setprop wrap.com.example.hellojni "logwrapper /data/local/Inst/bin/valgrind"

Вы должны быть в состоянии передать параметр сразу после valgrind

1 голос
/ 03 июня 2013

Я тоже столкнулся с этой проблемой. В моей ситуации я редактирую «val.sh» в windows & adb и помещаю его в эмулятор, но сценарий оболочки не может быть выполнен правильно. Затем я использую echo "*"> стиль val.sh, чтобы создать "val.sh", и он хорошо работает.

Таким образом, вы должны сначала убедиться, что "val.sh" может быть правильно интерпретирован.

0 голосов
/ 24 мая 2013

да, но вы должны использовать

adb shell setprop wrap.com.example.hellojni "logwrapper ./data/local/Inst/bin/valgrind"
/ \ ----для оболочки (.) важно !!!

также, если вы хотите использовать некоторые настройки инструмента valgrind - используйте это:

adb shell setpropwrap.com.example.hellojni "logwrapper ./data/local/Inst/bin/valgrind --tool = massif (... настройка массива atc ...)" *

...