一.摘要
我们在分析fd泄漏问题的时候一般的通用方法是在/proc/pid/fd下不断的ls -al | wc -l统计fd数量,并且查看哪个fd不断的增多,然后再去代码中排查对应的代码,有时候光看fd并不容易找到泄漏的地方。本文章将介绍高通的leakdetect方法。
二.leakdetect使用介绍
默认情况下手机已经包含了fd泄漏的检测代码,具体路径在:bionic/libc/malloc_debug/,它可以监控:file(1),socket(2),mmap(3)
具体原理就不多说了,有兴趣的自己看源码吧,下边介绍使用方法:
1.adb root
2.adb shell setprop libc.debug.leakdetect 1(1代表监控file,2代表监控socket,3代表监控mmap)
3.adb shell setprop libc.debug.leakdetect.program app_process(安卓进程填app_process,native进程填对应的进程名字)
4.adb shell stop
5.adb shell start
6.adb shell kill -28 pid(你要监控的进程)
7.当你的fd不断增加的时候再次输入:adb shell kill -28 pid
你会在logcat中看到对应的结果:O机器关键字:fd_leak_debug Q机器关键字:malloc_debug
三.结果展示
file泄漏检测结果&#