内核内存泄漏检测器

时间:2019-04-19 15:28:23

标签: c linux-kernel kernel

我已在内核黑客攻击中启用“内核内存泄漏检测器”选项,并重建/重新引导系统,目前kmemleak文件存在于/ sys / kernel / debug文件夹中,但似乎我无法通过“ echo”来触发扫描扫描> / sys / kernel / debug / kmemleak”,我已经将debugfs挂载到/ sys / kernel / debug,但是当我尝试触发扫描时,它给我“ -bash:echo:写错误:设备或资源繁忙”。我的猜测是,这是因为即使我是root用户,我也没有在/ sys文件夹内的写权限。有什么建议如何解决这个问题?非常感谢。

我尝试过

1 个答案:

答案 0 :(得分:2)

使用kmemleak时,您需要检查几件事。

检查是否传递了任何引导参数或命令行参数kmemleak=off

在启动日志中,检查是否有与kmemleak相关的日志,尤其是下面的日志

kmemleak: Kernel memory leak detector disabled
kmemleak: Early log buffer exceeded (919), please increase DEBUG_KMEMLEAK_EARLY_LOG_SIZE

大概,我认为您需要配置CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE。如果在引导过程中kmemleak的日志大小增加到超过Linux内核配置中设置的限制,则kmemleak被禁用。

因此,配置CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE并增加大小。此选项也在kernel hacking下。我正在使用内核源代码4.19.9,并附上屏幕截图以供参考。 Maximum kmemleak early log entries是该字段,您可能需要将其设置为更高的值(例如4096)。

enter image description here