我试图启动Valgring这样下一个Java程序(ADB壳):
valgrind am start -a android.intent.action.MAIN -n com.me.myapp/.MainActivity
我越来越:
==2362== Memcheck, a memory error detector
==2362== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==2362== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==2362== Command: am
==2362==
/system/bin/sh: am: No such file or directory
你必须创建一个脚本,让我们把它叫做start_valgrind.sh
#!/system/bin/sh
PACKAGE="com.example.hellojni"
# Callgrind tool
#VGPARAMS='-v --error-limit=no --trace-children=yes --log-file=/sdcard/valgrind.log.%p --tool=callgrind --callgrind-out-file=/sdcard/callgrind.out.%p'
# Memcheck tool
VGPARAMS='-v --error-limit=no --trace-children=yes --log-file=/sdcard/valgrind.log.%p --tool=memcheck --leak-check=full --show-reachable=yes'
export TMPDIR=/data/data/$PACKAGE
exec /data/local/Inst/bin/valgrind $VGPARAMS $*
应复制到设备。
一旦你在start_valgrind.sh文件上面的脚本某处你的本地文件系统中你可以使用下面的脚本(让调用它bootstrap_valgrind.sh)做所有的工作(副本start_valgrind.sh脚本到手机上,运行它通过Valgrind的开始你的应用程序)。
#!/usr/bin/env bash
PACKAGE="com.example.hellojni"
adb push start_valgrind.sh /data/local/
adb shell chmod 777 /data/local/start_valgrind.sh
adb root
adb shell setprop wrap.$PACKAGE "logwrapper /data/local/start_valgrind.sh"
echo "wrap.$PACKAGE: $(adb shell getprop wrap.$PACKAGE)"
adb shell am force-stop $PACKAGE
adb shell am start -a android.intent.action.MAIN -n $PACKAGE/.HelloJni
adb logcat -c
adb logcat
exit 0
警告:确保属性名称与setprop即(wrap.com.yourcompany.yourapp)中设置小于31个字符的长度。
否则,你会得到错误“无法设置属性”,因为你不能设置一个属性的名称,长度大于31,这是在属性名的数量最大允许的字符。
另外,属性值应为<= 91个字符: https://stackoverflow.com/a/5068818/313113
对于如何构建Valgrind的Android版(ARM)看我的剧本从这里: https://stackoverflow.com/a/19255251/313113
1)我用下面的脚本生成的文件夹研究所的Android的valgrind生成失败
2)错误我在做什么是我没有给写入权限全部下出师表的MEMCHECK工具是位于lib / Valgrind的文件夹。
我发现所有的文件夹复制下产生研究所(BIN,分享,inclide,LIB)文件夹到/ data /本地/研究所遍历每个文件夹,并设置权限和chmod 777 *
面临的问题一样MEMCHECK工具没有发现手臂Linux的,如果我因此未复制所有这些文件夹1个文件夹/研究所面临MEMCHECK权限如果不要设置权限和chmod 777在Hirearchy所有文件夹