作为一个合格的BSP开发人员,在工作中会碰到各种内存泄漏的问题,遇到该问题的时候要如何确认问题原因和排查方向 这是大家一直比较关心的问题,接下来我主要介绍几款BSP工程师排查内核内存泄漏的手段和方式
内存泄漏之kmemleak
内存泄漏指的是申请的内存没有及时释放 导致内存不够用,这个时候就需要定位到底是哪个哪个模块哪个函数出现了问题最简单有效的手段是kmemleak;
kmemleak会去跟踪kmalloc、vlmalloc等使用情况,把没有释放的内存dump出来,废话少说先上操作流程
1.打开内核配置选项
注意一定要修改maxinum log值 默认是400 如果没有修改会出现kmemleak无法使用的问题
注意编译一下M Simple模块用于测试使用
2.uboot下配置cmdline参数 默认打开kemleak ->kmemleak=on
内核启动之后
3.mount -t debugfs nodev /sys/kernel/debug
内核默认每10分钟扫描一次 也可以手动开启
4.echo scan > /sys/kernel/debug/kmemleak
5.cat /sys/kernel/debug/kmemleak<