可参考:http://blog.youkuaiyun.com/lickylin/article/details/19172725
kernel panic具体到哪句话的debug方法以及对整包kernel vmlinux的反汇编方法:
build完kernel后会有vmlinux。
敲
arm-none-eabi-gdb vmlinux的话就可以开始debug了
这时控制台会显示
(gdb)字样
PC emmc_partition+0x38/0x28c
LR ...
可输入(下面的”b”是断点”break”的简写)
(gdb) b your_func_name
如上图你的函数是emmc_partition
(gdb) b emmc_partition
得到该函数在哪个文件的哪一行,以及其指针值
接着可以拿上面的指针值+“paniclog指示的要加的值”(图中对应的是0x38)来计算出一个值,假设计算出的是0xp(例子中是0xc02d5db4c+0x38)
则
(gdb) b *0xp
就可以得到kernel panic具体卡在了哪句话。
如果没有打印行号的话,需要在kernel的Makefile里的KBUILD_CFLAGS选项加-g选项,如下图示意:
KBUILD_CFLAGS := -Wall -g -Wundef -Wstrict-prototypes -Wno-trigraphs \