Как запустить приложение 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....)"