linux 内核崩溃处理

pc : [<bf0000b8]

1.定位代码崩溃在内核中还是xxx.ko

cat  /proc/kallsyms >1.txt


c0034818 T __kmalloc

...

c00082a8 t quiet_kernel /*最开始的是虚拟地址*/

...

bf000000  t $a [cdd]

..

由此可看代码崩溃在xxx.ko

2.定位崩溃在xxx.ko中的哪个函数

arm-linux-objdump -D cdd.ko >2.txt


00000000 <cdd_llseek>

0: e1a0c00d mov ip,sp //编译地址,编译后的指令,汇编语言

编译地址+0xbf000000 = 存放地址

0000009c <cdd_open>

9c: e1a0c00d mov ip,sp

a0: e92dd8f0 push {r4,r5,r6,r7,fp,ip,lr,pc}

...

b8: e5c43000 strb r3,[r4] ------此处出现问题


由此知道崩溃在cdd_open函数

3. 反汇编内核代码了解cdd_open被调用流程

arm-linux-objdump -D vmlinux >3.txt

cdd_open压栈,push {r4,r5,r6,r7,fp,ip,lr,pc}

这8个数据就是你要压的数据,lr寄存器的值是函数调用完要返回的地址

根据lr,查看上一次调用cdd_open的函数

以此类推,可以得到调用流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值