在须要调式内核时,在编译时在kernel hacking菜单中linux
CONFIG_DEBUG_KERNEL 打开则使其余调式选项可用安全
CONFIG_DEBUG_SLAB 函数
打开内核内存分配函数的几类检查,能够探测到一些内存覆盖和遗漏初始化错误。spa
CONFIG_DEBUG_PAGEALLOCcode
满的页在释放时被从内核地址空间去除blog
CONFIG_DEBUG_SPINLOCK内存
内核捕捉对未初始化的自旋锁的操做编译
在调式内核代码时,使用printk达到目的。class
printk 能够根据消息的严重程度对其分类,经过附加不一样的记录级别或者优先级在消息上。软件
printk(KERN_DEBUG "Here I am: %s: %i\n", __FILE__, __LINE__); printk(KERN_CRIT "I'm trashed; Giving up on %p\n", ptr);
有8种可能的记录字串,在头文件<linux/kernel.h>头文件中
KERN_EMERG 用于紧急消息,经常是那些崩溃前的消息。
KERN_ALERT 须要马上动做的情形
KERN_CRIT 严重状况,经常与严重的硬件或软件失效有关
KERN_ERR 用来报告错误状况; 设备驱动经常使用KERN_ERR来报告硬件故障
KERN_WARNING 有问题的状况警告,这些状况本身不会引发系统的严重问题
KERN_NOTICE 正常状况,可是仍然值得注意。安全相关的状况会报告
KERN_INFO 信息型消息。这个级别,不少驱动在启动时打印它们发现的硬件信息
KERN_DEBUG 用做调式消息
数字范围从0到7,越小的数表示越大的优先级。
若是没有指定优先级缺省为DEFAULT_MESSAGE_LOGLEVEL kernel/printk.c