在須要調式內核時,在編譯時在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