GDB调试崩溃信息kernel panic
------------[ cut here ]------------
Kernel BUG at c016bcbe [verbose debug info unavailable]
Internal error: Oops - BUG: 0 [#1] PREEMPT THUMB2
CPU: 0 PID: 551 Comm: MdbShmServer Tainted: P O 4.9.227 #7
Hardware name: SStar Soc (Flattened Device Tree)
task: c2ad0000 task.stack: c1ae2000
PC is at MDrv_MIU_Protect_interrupt+0x1a/0x2c
LR is at HAL_MIU_GetHitProtectInfo+0xd1/0x110
pc : [<c016bcbe>] lr : [<c016c4ed>] psr: 600101b3
[<c016bcbe>] (MDrv_MIU_Protect_interrupt) from [<c0034e1b>] (__handle_irq_event_percpu+0x2d/0xaa)
[<c0034e1b>] (__handle_irq_event_percpu) from [<c0034ea7>] (handle_irq_event_percpu+0xf/0x30)
[<c0034ea7>] (handle_irq_event_percpu) from [<c0034eef>] (handle_irq_event+0x27/0x3c)
[<c0034eef>] (handle_irq_event) from [<c0036b73>] (handle_fasteoi_irq+0x6b/0xb4)
[<c0036b73>] (handle_fasteoi_irq) from [<c003474d>] (generic_handle_irq+0xd/0x16)
[<c003474d>] (generic_handle_irq) from [<c0034a73>] (__handle_domain_irq+0x57/0x68)
[<c0034a73>] (__handle_domain_irq) from [<c00092a9>] (gic_handle_irq+0x31/0x48)
[<c00092a9>] (gic_handle_irq) from [<c000fce5>] (__irq_svc+0x65/0xac)
Exception stack(0xc1ae39b0 to 0xc1ae39f8)
Code: fff4 f89d 3000 b103 (de02) 4802
---[ end trace 0f494d05becfaa7d ]---
Kernel panic - not syncing: Fatal exception in interrupt
---[ end Kernel panic - not syncing: Fatal exception in interrupt
截取的一段kernel panic
信息
其中通过PC
指针可以知道出错地址为 c016bcbe
或者用函数地址加偏移量 MDrv_MIU_Protect_interrupt+0x1a
使用GDB 直接对其对应ko或可执行文件调试,以下几种方法均可
显示哪一行
(gdb) b *0xc016bcbe
(gdb) b *(MDrv_MIU_Protect_interrupt+0x1a)
显示一段
(gdb) l *(0xc016bcbe)
(gdb) l *(MDrv_MIU_Protect_interrupt+0x1a)
显示反汇编
(gdb) disassemble 0xc016bcbe
对于动态编入内核的模块 出现 kernel panic 可以使用objdump -S
反汇编,没有- g
编译出不来对应code,重新 - g
编译再 objdump -S
就可以对照看了