kmemleak的简单使用

简介

  • kmemleak是linux kernel中用于就检测内存泄露的一种机制。其类似于垃圾收集器,但是与垃圾收集器不同的是,侦测到的孤儿对象不会被free掉,而是通过kmemleak显示出来。

如何打开

  • 打开kernel config kernel memory leak detector
  • 调整Maximum kmemleak early log entries的大小,如果不调整这个参数的大小,在启动的过程中可能会出现由于 entries 太小而导致kmemleak一直保持disable的状态,这在 mm/kmemleak.c 中可以看到相关的代码,当entries 太小的时候, 会调用kmemleak_disable()来disable掉kmemleak。
  • 在boot cmdline中加入参数 kmemleak=on 用来enable kmemleak。

如何使用kmemleak

  • 挂载debugfs
  • mount -t debugfs nodev /sys/kernel/debug/
  • 使用kmemleak
  • 扫描发现memory leak: echo scan > /sys/kernel/debug/kmemleak
  • 查看扫描到的leak对象:cat /sys/kernel/debug/kmemleak
  • 清除扫描到的泄露对象:echo clear > /sys/kernel/debug/kmemleak

你可能感兴趣的:(kmemleak的简单使用)