私はこの質問に対する答えを見つけようと、ここ一週間探し続けてきました。
Valgrind を使用して Android アプリを起動するにはどうすればよいですか? 「am」コマンドを使用してアプリを起動できることはわかっていますが、アプリは起動して終了します。
ネイティブ C コードに NDK を使用するアプリを作成していますが、疑わしいメモリ エラーがないか確認する必要があります。
編集:
もう少し勉強になりました。シェル スクリプトを使用してアプリを「ラップ」できます。
私が使用しているシェル スクリプトは次のとおりです。
#!/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 にも何も表示されないからです。何かヒントはありますか?
編集2: ああ、シェルスクリプトは上記の「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
シェル スクリプトに問題があったので、代わりにこれを使用しました。
adb shell setprop wrap.com.example.hellojni "logwrapper /data/local/Inst/bin/valgrind"
valgrindの直後にパラメータを渡すことができるはずです