上周我一直在寻找这个问题的答案。
如何使用 valgrind 启动 Android 应用程序?我知道我可以使用“am”命令启动应用程序,但它会启动应用程序并退出。
我正在编写一个使用 NDK 执行本机 C 代码的应用程序,我需要检查它是否存在可疑的内存错误。
Edit:
我又学到了一点。您可以使用 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 中没有看到任何内容。有什么提示吗?
编辑2:
哦,shell 脚本是用上面的“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
我的 shell 脚本有问题,所以我用了这个。
adb shell setprop wrap.com.example.hellojni "logwrapper /data/local/Inst/bin/valgrind"
您应该能够在 valgrind 之后立即传入参数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)