mtrace使用

mtrace 使用介绍
一旦发现系统有这个 “苗头”,当务之急就是要找到代码里哪里忘记归还了动态分配的内存。 而 “内存分配跟踪(malloc tracing)” 机制则是帮助我们检查 “内存泄露” 的好帮手,本文就来给大家介绍一下这个工具的使用,习惯上这个工具我们简称为 mtrace,下文也直接用 mtrace 指称这个工具。

mtrace 工具的主要思路是在我们的调用内存分配和释放的函数中装载 “钩子(hook)” 函数,通过 “钩子(hook)” 函数打印的日志来帮助我们分析对内存的使用是否存在问题。对该工具的使用包括两部分内容,一个是要修改源码,装载 hook 函数,另一个是通过运行修改后的程序,生成特殊的 log 文件,然后利用 mtrace 工具分析日志,判断是否存在内存泄露以及定位可能发生内存泄露的代码位置。

1.添加头文件#include <mcheck.h>

2.在开始捕捉处加入
mtrace();
setenv(“MALLOC_TRACE”, “/userdata/mem.txt”, 1);

3.在结束处加入 muntrace();

4.编译并运行 会在生成/userdata/mem.txt

= Start
@ test:(DS_SetDeviceProperty+0x124)[0x44bb14] + 0x7f9c023b10 0x98
@ test:[0x4b986c] + 0x7f9c017f10 0x40
@ test:[0x4b986c] + 0x7f9c01ef60 0x40
@ test:[0x4ba58c] + 0x7f9c023210 0x9
@ test:[0x4ba58c] + 0x7f9c017e80 0x21
@ test:[0x4b986c] + 0x7f9c01df50 0x40

5.用编译中的mtrace在x86下, 查看mem.txt
./mtrace 运行文件名 mem.txt

6.通过addrline 查看函数
addr2line -f -e test 0x4b986c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值