在定位内核泄露问题时需要开启 kmemleak 功能。
在config 中添加如下选项
CONFIG_KERNEL_DEBUG_INFO=y
CONFIG_KERNEL_DEBUG_KERNEL=y
CONFIG_KERNEL_DEBUG_KMEMLEAK=y
CONFIG_KERNEL_HAVE_DEBUG_KMEMLEAK=y
CONFIG_KERNEL_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=2000
使用以上选项后,编译并烧写固件。系统up以后,参考如下方法
xxxxxxxxxx
echo scan > /sys/kernel/debug/kmemleak
xxxxxxxxxx
echo clear > /sys/kernel/debug/kmemleak
每隔10分钟检测一次,或主动触发检测。
xxxxxxxxxx
cat /sys/kernel/debug/kmemleak
注意在开发时可以开启以下选项,但发布时需要将其去掉。以下调试选项会降低系统性能。
该选项用于控制是否在menuconfig中隐藏 内核调试选项
该选项开启后,编译生成的kernel image 将包含调试信息。因此编译出来的内核会比不开启时大一些。
该选项在内核及内核模块都添加了调试信息 (gcc -g),主要方便在内核crash后,可方便进行问题定位。