linux内核问题定位,Arm内核的Oops错误定位方法

这篇博客介绍了如何通过Linux内核的Oops错误信息定位问题,具体涉及到出错的NULL指针解引用,以及如何使用arm-none-linux-gnueabi-gcc-nm和arm-none-linux-gnueabi-objdump命令找到出错函数at24c02_probe在内核中的地址和反汇编代码,最终确定错误发生在打印设备id数据的语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

出错的log信息如下:

1 Unable to handle kernel NULL pointer dereference at virtual address 00000014

2 pgd =c00040003 [00000014] *pgd=00000000

4 Internal error: Oops: 5 [#1] PREEMPT SMP ARM5 Modules linked in:6 CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.10.45 #125

7 task: dc078000 ti: dc05a000 task.ti: dc05a0008 PC is at at24c02_probe+0x78/0xa0

9 LR is at wake_up_klogd+0x84/0xac

10 pc : [] lr : [] psr: 40000113

11 sp : dc05bdb8 ip : dc05bcc0 fp : dc05bdd412 r10: c0a20a80 r9 : 0000009e r8 : c03e274813 r7 : 00000000r6 : c08ccee4 r5 : c08ccf00 r4 : c075dbbc14 r3 : 00000000 r2 : 00000001 r1 : 20000193 r0 : 00000020

15 Flags: nZcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel16 Control: 10c5387d Table: 1000404a DAC: 00000015

17 Process swapper/0 (pid: 1, stack limit = 0xdc05a238)

1) 根据log信息,PC的值是 PC is at at24c02_probe+0x78/0xa0;

at

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值