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
就可以對照看了