私は先週、この質問に対する答えを見つけようとして探していました。
Androidアプリをvalgrindで起動するにはどうすればよいですか? '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に何も表示されないため、これは正しくないと思います。ヒントはありますか?
Edit2:ああ、シェルスクリプトは上記の「setprop」コマンドで示されています。そう
adb Shell setprop wrap.com.starlon.froyvisuals "logwrapper /data/local/val.sh"
Logcatにはまだ何も表示されていません。
最初に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の直後にパラメーターを渡すことができるはずです
私もこの問題に遭遇しました。私の状況では、windows&adbで「val.sh」を編集します。エミュレータにプッシュしますが、シェルスクリプトを正しく実行できませんでした。次に、echo "*"> val.shスタイルを使用して "val.sh"を作成すると、うまく機能します。
したがって、最初に「val.sh」が正しく解釈されることを確認する必要があります。