在Android设备使用Valgrind检查内存错误

本文档详细介绍了如何在Android设备上利用Valgrind 3.8.1进行内存错误检查。首先,需在Ubuntu 12.10 x86-64环境下使用Android NDK r8编译Valgrind。接着,通过logwrapper将Valgrind的输出重定向到logcat,并设置adb属性。然后,通过'am'命令启动应用,以利用重定向脚本进行内存检测。注意,由于Valgrind运行速度较慢,可能需要寻找优化方法。

记录一下主要步骤:

1. 编译valgrind, 我的编译环境:Ubuntu 12.10 x86-64,  android ndk r8,

     目标android设备的os是android 4.0

     下载valgrind 3.8.1, 包含README.android, 按步骤执行,我没有遇到问题,下面是根据的设备作的脚本:

export NDKROOT=~/Tools/android/android-ndk-r8/
export AR=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-ar
export LD=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-ld
export CC=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc
export HWKIND=generic
CPPFLAGS="--sysroot=$NDKROOT/platforms/android-14/arch-arm -DANDROID_HARDWARE_$HWKIND" \
   CFLAGS="--sysroot=$NDKROOT/platforms/android-14/arch-arm" \
   ./configure --prefix=/data/local/Inst \
   --host=armv7-unknown-linux --target=armv7-unknown-linux \
   --with-tmpdir=/sdcard
make -j2
make -j2 install DESTDIR=`pwd`/Inst



2. 安装valgrind到anddroid设备:
     adb push Inst  /               
    注意是'/' 而不是'/data/local/'  看一个Inst下生成的东西就明白的

3.  使valgrind的输出重定向到logcat
      

#!/system/bin/sh
VGPARAMS='--error-limit=no'
export TMPDIR=/data/data/app_path
exec /data/local/Inst/bin/valgrind $VGPARAMS $*
以上脚本随意命名,如“val.sh",  adb push val.sh /data/local    并增加可执行的权限

用logwrapper来重定向
adb shell setprop wrap.your_package "logwrapper /data/local/val.sh"

4. 启动app

    如果已经运行, 必须先关闭
    然后用am启动, am start -a android.intent.action.MAIN -n your_package/.HomeActivity
    此时会调用3中的脚本。


运行非常慢, 有待进一步的解决。

参考:

 1. http://blog.mozilla.org/jseward/2011/09/27/valgrind-on-android-current-status/

 2. http://www.ibm.com/developerworks/cn/linux/l-cn-valgrind/


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值