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

 

posted @ 2018-01-07 13:55  elewei  阅读(243)  评论(0)    收藏  举报