Как запустить приложение Android с valgrind
Я искал последнюю неделю, пытаясь найти ответ на этот вопрос.
Как запустить Android-приложение с valgrind? Я знаю, что могу запустить приложение с помощью команды "am", но он запускает приложение и завершает работу.
Я пишу приложение, которое использует NDK для собственного C-кода, и мне нужно проверить его на наличие подозрительных ошибок памяти.
Изменить:
Я узнал немного больше. Вы можете "обернуть" приложение оболочкой script.
Здесь оболочка script использую:
#!/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
Я не думаю, что это правильно, потому что я не уверен, где находится оболочка script, и я ничего не вижу в logcat. Любые подсказки?
Edit2:
О оболочке script указывается команда "setprop" выше. Так
adb shell setprop wrap.com.starlon.froyvisuals "logwrapper /data/local/val.sh"
Я все еще ничего не вижу в logcat.
Ответы
Ответ 1
Сначала вы можете очистить logcat
prompt# adb logcat -c
prompt# adb logcat
Вы должны иметь возможность видеть журналы, входящие после запуска вашего приложения.
am start -a android.intent.action.MAIN -n com.example.hellojni/.HelloJni
У меня были проблемы с моей оболочкой script, и я использовал это вместо этого.
adb shell setprop wrap.com.example.hellojni "logwrapper /data/local/Inst/bin/valgrind"
Вы должны иметь возможность передать параметр сразу после valgrind
Ответ 2
Я тоже столкнулся с этой проблемой. В моей ситуации я редактирую "val.sh" в окнах и adb, нажимая их на эмулятор, но оболочка script не может быть выполнена правильно. Затем я использую стиль эха "*" > val.sh, чтобы сделать "val.sh" , и он работает хорошо.
Итак, вы должны сначала убедиться, что "val.sh" можно правильно интерпретировать.
Ответ 3
да, но вы должны использовать
adb shell setprop wrap.com.example.hellojni "logwrapper. /data/local/Inst/bin/valgrind "
/\ ---- для оболочки (.) важно!!!
также, если вы хотите использовать некоторую конфигурацию инструмента valgrind - используйте это:
adb shell setprop wrap.com.example.hellojni "logwrapper. /data/local/Inst/bin/valgrind --tool = massif (... configure massif a.t.c....)"