1.当kernel出现故障与错误时,kernel会发出oops。
oops输出的错误信息包含两部分,
- 寄存器中保存的信息;
- 可供追踪的回溯线索。
通过此可以找出问题发现部位。
2.kallsyms特性
该特性存放中kernel中相应函数地址的符号名称,透过此,kernel可以输出解码好的跟踪线索
CONFIG_KALLSYMS
=> 启用kallsyms特性
CONFIG_KALLSYMS_ALL
=> 表示在在内存中不仅存放了函数名称,而且还存放了符号名。
3.kernel调试
CONFIG_DEBUG_KERNEL
=> 用于开启kernel调试
CONFIG_PRINTK_TIME=y
=> 用于开启kernel的timestamp
a.BUG()与BUG_ON()
调用时kernel会发出oops
b.panic()
调用时会打印错误信息,同时还会挂起整个系统。使用同printk()
c.dump_stack()
调用时会打印栈的回溯信息。
d.current指针()
利用current指针可以获取当前进程的状态。