内核内存泄漏检测器

问题描述 投票:2回答:1

我在内核黑客中启用了“内核内存泄漏检测器”选项,并重建/重启系统,现在kmemleak文件存在于/ sys / kernel / debug文件夹中,但好像我无法通过“echo scan> /触发扫描sys / kernel / debug / kmemleak“,我已经将debugfs挂载到/ sys / kernel / debug,但是当我尝试触发扫描时,它给了我”-bash:echo:write error:Device或resource busy“。我猜测这是因为我在/ sys文件夹中没有写权限,即使我是root用户。有什么建议如何解决这个问题?非常感谢。

我试过了

c linux-kernel kernel
1个回答
2
投票

使用kmemleak时需要检查一些事情。

检查是否正在传递任何bootargs或命令行参数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

© www.soinside.com 2019 - 2024. All rights reserved.