最近看到腾讯的一个内存监控组件:OOMDetector,于是加到当前的工程里面测试一下。
OOMDetector地址:点击打开链接
按着给的demo,把组件加入到当前工程,真机跑起来,还真发现了1个内存泄漏,但是给出的提示地址是真实的内存地址,需要转换。看了组件使用介绍,看了半天,才注意到文章写的堆栈翻译,又在工程里面找,终于找到了translate_oom.py这个工具。
以下就是具体使用这个工具翻译的过程:
1.在控制台进入new目录:
2.将以下文件拷贝到new目录下:
translate_oom.py(这个是堆栈的翻译文件,相当于工具文件)
OOMDetector.app.dSYM(这个是app编译好跟app同时生成的文件,是符号表路径)
normal_malloc20180205_154255347.log(Library/OOMDetector路径下的爆内存日志。取得此日志方法:在测试手机连接电脑的情况下,
在xcode的Window->Devices and Simulators,如下图:
,最后右键显示包内容,Library/OOMDetector路径下的爆内存日志)
3.输入:python translate_oom.py OOMDetector.app.dSYM normal_malloc20180205_154255347.log,如下图:
4.得到的文件:normal_malloc20180205_154255347.log_translated.log
对比normal_malloc20180205_154255347.log和normal_malloc20180205_154255347.log_translated.log可以看到,
normal_malloc20180205_154255347.log_translated.log是可以看到具体代码出错的地方,如下图:
5.如果是内存泄漏,需要自己保存内存泄漏的提示信息(同样以log文件保存),然后打开translate_oom.py文件,定位到倒数第二行,translate(0,"stack:","Malloc_size:");将脚本里面参数改成 translate(0,"stack:","leak”),然后按照上面的方式再操作一遍即可。
如下图是内存泄漏的例子:
over!