kmemleak
是linux kernel中用于就检测内存泄露
的一种机制。其类似于垃圾收集器,但是与垃圾收集器不同的是,侦测到的孤儿对象不会被free掉,而是通过kmemleak
显示出来- 打开内核配置
- CONFIG_DEBUG_FS=y #开启debugfs
- CONFIG_DEBUG_KMEMLEAK=y # 开启kmemleak debug
- CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y # 开启kmemleak
- CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=40000 # 大小
- uboot引导内核参数添加
- kmemleak=on
- 使用方法
- 挂载debugfs
- mount -t debugfs nodev /sys/kernel/debug/
- echo scan > /sys/kernel/debug/kmemleak:触发一次扫描
echo clear > /sys/kernel/debug/kmemleak:清除当前 kmemleak 记录的泄露信息
echo off > /sys/kernel/debug/kmemleak:关闭kmemleak(不可逆转的)
echo stack=off > /sys/kernel/debug/kmemleak:关闭task栈扫描
echo stack=on > /sys/kernel/debug/kmemleak:使能task栈扫描
echo scan=on > /sys/kernel/debug/kmemleak:启动自动内存扫描线程
echo scan=off > /sys/kernel/debug/kmemleak:停止自动内存扫描线程
echo scan=<secs> > /sys/kernel/debug/kmemleak:设置自动扫描线程扫描间隔,默认是600,设置0则是停止扫描
echo dump=<addr> > /sys/kernel/debug/kmemleak:dump某个地址的内存块信息,比如上面的echo dump=0xffffffc008efd200 > /sys/kernel/debug/kmemleak即可查看详细信息
kmemleak使用
最新推荐文章于 2024-03-14 18:34:02 发布