环境:

Linux kernel 3.10.0
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1

问题:

内核运行过程中打印“unable to handle kernel NULL pointer dereference at XXX”,然后打印出一堆内核调用栈,如图,这时应该怎么定位问题呢?很简单,步骤如下。

image.png
解决方法:
1.找到内核编译代码下的vmlinux文件;
2.gdb vmlinux;
3.输入l *(ipv6fragrcv+0x39),即红线框中内容,根据输出即可找到问题点。
image.png

注意:
内核编译时打开debug开关,如:
CONFIG_DEBUG_KERNEL=Y;
CONFIG_DEBUG_INFO=Y


跬小海
0 声望1 粉丝