OS - 内核调式技术
一、内核kernel hacking调式菜单
在需要调式内核时,在编译时在kernel hacking菜单中
CONFIG_DEBUG_KERNEL 打开则使其他调式选项可用
CONFIG_DEBUG_SLAB
打开内核内存分配函数的几类检查,可以探测到一些内存覆盖和遗漏初始化错误。
CONFIG_DEBUG_PAGEALLOC
满的页在释放时被从内核地址空间去除
CONFIG_DEBUG_SPINLOCK
内核捕捉对未初始化的自旋锁的操作
二、打印调式
在调式内核代码时,使用printk达到目的。
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
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号