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