制造、调试OOPS
1.前言
在Linux系统里出现kernel panic时会打印OOPS信息,把当前的寄存器状态、堆栈信息、完整的Call trace都打印出来,以便我们更好的定位错误。下面我们将会自已制造一个OOPS,并采用多种方式来定位调试OOPS,以便大家更好的了解内核,深入探索内核,利用内核异常信息来定位处理问题。
2.制造OOPS
这次我们以模块的形式来制造一个OOPS,文件名为oops_example.c,内容如下:
#include <linux/kernel.h>
#include <linux/module.h>
static __init int oops_example_init(void)
{
int *p = 0;
printk("Hi OOPS!\n");
*p = 12;
return 0;
}
static __exit void oops_example_exit(void)
{
printk("ByeOOPS!\n");
}