如何定位kernel panic到哪行的source code

可参考: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 \
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值