Linux驱动加载后kernel panic的oops信息分析

kernel panic 表示Linux kernel走到了一个不知道该怎么走下一步的状况,一旦到这个情况,kernel就尽可能把它此时能获取的全部信息都打印出来,至于能打印出多少信息。

首先看一下出错的kernel panic 现象,下面是一个kernel panic的出错log:Linux驱动加载后kernel panic的oops信息分析

如上崩溃信息,可知发生崩溃的函数为proslic_api_char_dev_init函数,偏移为0xf4的位置。这里介绍2种方法处理这个情况,分别针对编译为模块的驱动和编译进内核的驱动。

1. 如果发生的错误函数是属于驱动模块的,执行:arm-none-linux-gnueabi-objdump -D first_drv.ko > first_drv.dis

2. 如果发生的错误函数是属于内核的,这个时候和发生在模块里类似,不过这里要反汇编整个内核:arm-none-linux-gnueabi-objdump -D vmlinux > vmlinux.dis

也可以通过这个教程使用gdb来定位错误行数:https://blog.****.net/lickylin/article/details/19172725