上周我一直在寻找这个问题的答案。
如何使用 valgrind 启动 Android 应用程序?我知道我可以使用“am”命令启动应用程序,但它会启动应用程序并退出。
我正在编写一个将 NDK 用于本机 C 代码的应用程序,我需要检查它是否存在可疑的内存错误。
编辑:
我又学到了一点。您可以使用 shell 脚本“包装”应用程序。
这是我正在使用的 shell 脚本:
#!/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
我认为这是不对的,因为我不确定 shell 脚本的位置,而且我在 logcat 中看不到任何内容。有什么提示吗?
Edit2:哦,shell 脚本用上面的“setprop”命令表示。所以
adb shell setprop wrap.com.starlon.froyvisuals "logwrapper /data/local/val.sh"
我仍然没有在 logcat 中看到任何内容。