android 移植valgrind

来源:互联网 发布:天谕女性捏脸数据 编辑:程序博客网 时间:2024/06/05 03:37

自己一直在linux下使用valgrind用于应用内存泄漏,网上也找到了宋宝华老师写的有关源码编译移植的文章。我发现在我android编译后out目录里面就有相关的valgrind文件。所以就懒得下载valgrind源码了。

./target/product/g18ref/symbols/system/bin/valgrind./target/product/g18ref/symbols/system/lib/valgrind./target/product/g18ref/symbols/system/lib/valgrind/vgpreload_tsan-arm-linux.so./target/product/g18ref/symbols/system/lib/valgrind/vgpreload_core-arm-linux.so./target/product/g18ref/symbols/system/lib/valgrind/memcheck-arm-linux./target/product/g18ref/symbols/system/lib/valgrind/vgpreload_drd-arm-linux.so./target/product/g18ref/symbols/system/lib/valgrind/massif-arm-linux./target/product/g18ref/symbols/system/lib/valgrind/helgrind-arm-linux./target/product/g18ref/symbols/system/lib/valgrind/vgpreload_helgrind-arm-linux.so./target/product/g18ref/symbols/system/lib/valgrind/cachegrind-arm-linux./target/product/g18ref/symbols/system/lib/valgrind/vgpreload_memcheck-arm-linux.so./target/product/g18ref/symbols/system/lib/valgrind/drd-arm-linux./target/product/g18ref/symbols/system/lib/valgrind/callgrind-arm-linux./target/product/g18ref/symbols/system/lib/valgrind/vgpreload_massif-arm-linux.so./target/product/g18ref/symbols/system/lib/valgrind/none-arm-linux./target/product/g18ref/symbols/system/lib/valgrind/tsan-arm-linux

第一行是编译出来的bin文件
我把它放在 android 盒子的 data 目录,
第一行之后的都是valgrind所用的库文件
这个库文件可以随便指定。之后用export VALGRIND_LIB= 指定你库文件路径
我开始移植为了小心就和宋宝华老师放的位置一样,
/data/local/valgrind/lib/valgrind

ls /data/local/valgrind/lib/valgrind/                 cachegrind-arm-linuxcallgrind-arm-linuxdefault.suppdrd-arm-linuxhelgrind-arm-linuxmassif-arm-linuxmemcheck-arm-linuxnone-arm-linuxtsan-arm-linuxvgpreload_core-arm-linux.sovgpreload_drd-arm-linux.sovgpreload_helgrind-arm-linux.sovgpreload_massif-arm-linux.sovgpreload_memcheck-arm-linux.sovgpreload_tsan-arm-linux.so

开始运行的时候发现少default.supp文件。
把out/target/product/g18ref/obj/lib/default.supp文件移到valgrind就可以了。

在运行valgrind一定要指定库文件路径

export VALGRIND_LIB=/data/local/valgrind/lib/valgrind
#include <stdio.h>#include <stdlib.h>main(int argc, char **argv){    char *p = malloc(5);    char *q = malloc(10);    //free(p);    //free(q);    //    return;}

这是我编写的测试文件一看就有问题。
然后拷贝到android的data目录下。

ls datalost+foundmediamiscpptvpreinstall_md5propertyresource-cachesshsystemuservalgrindxc

其中 pptv是上面的测试文件 valgrind就是./target/product/g18ref/symbols/system/bin/valgrind文件。千万别把上面测试程序命名 test。
在中断下运行命令

./valgrind --leak-check=full --track-origins=yes  ./pptv  ==6285== Memcheck, a memory error detector==6285== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.==6285== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info==6285== Command: ./pptv==6285== ==6285== ==6285== HEAP SUMMARY:==6285==     in use at exit: 15 bytes in 2 blocks==6285==   total heap usage: 2 allocs, 0 frees, 15 bytes allocated==6285== ==6285== 5 bytes in 1 blocks are definitely lost in loss record 1 of 2==6285==    at 0x4897CCC: malloc (in /data/local/valgrind/lib/valgrind/vgpreload_memcheck-arm-linux.so)==6285==    by 0x1083C7: ??? (in /data/pptv)==6285== ==6285== 10 bytes in 1 blocks are definitely lost in loss record 2 of 2==6285==    at 0x4897CCC: malloc (in /data/local/valgrind/lib/valgrind/vgpreload_memcheck-arm-linux.so)==6285==    by 0x1083CD: ??? (in /data/pptv)==6285== ==6285== LEAK SUMMARY:==6285==    definitely lost: 15 bytes in 2 blocks==6285==    indirectly lost: 0 bytes in 0 blocks==6285==      possibly lost: 0 bytes in 0 blocks==6285==    still reachable: 0 bytes in 0 blocks==6285==         suppressed: 0 bytes in 0 blocks==6285== ==6285== For counts of detected and suppressed errors, rerun with: -v==6285== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)

发现上面报的错很明显。很好用

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩在家里偷钱怎么办 脾气不好的猫该怎么办 二年孩子偷钱怎么办 孩子偷钱2000报警怎么办? 我儿子十岁老是偷钱怎么办 13孩子偷同学钱怎么办 孩子偷同学的钱怎么办 儿子十四岁了老偷钱怎么办 发现初中生的儿子偷钱怎么办 被亲戚怀疑儿子偷钱怎么办 房门选的太白了怎么办 大厅地砖颜色比墙砖浅怎么办 房屋外墙渗水物业不管怎么办 走丢了怎么办教学反思 托班教案迷路了怎么办 大班安全教案遇到小偷怎么办 小班孩子舞台表演找不到位置怎么办 懂你英语学完了怎么办 小班社会走丢了怎么办 帮小老鼠搬鸡蛋怎么办 小老鼠还能怎么办鸡蛋 中班教案走丢了怎么办 走丢了怎么办可后反思 社会走丢了怎么办教案 孩子一直不吃幼儿园的饭怎么办 大班安全游泳抽筋怎么办反思 汤洒了怎么办教学反思 迷路了怎么办小班详案 大班牙又痛又摇怎么办 大班安全教案着火了怎么办 小班社会生病了怎么办反思 脚扭伤了怎么办的反思 中班安全迷了眼怎么办 15个月的小孩长泡疹怎么办 墨盒加错颜色墨水怎么办 墨盒颜色加错了怎么办 uV打印有色差是怎么办 cmyk和rgb有色差怎么办 染头发新长出来怎么办 白色衣服弄上口红怎么办 口红弄到牛仔裤上怎么办