Linux kernel panic

Linux panic分为hard panics(AIeee)和soft panic(Oops)两种主要类型的kernel panic

常见linux kernel panic报错内容:

kernel panic - not syncing: fatal exception in interrupt

kernel panic - not syncing: Attempted to kill the idle task

kernel panic - not syncing: Killing interrupt handler

kernel panic - not syncing: Attempted to kill init


1、内核在crush的时候会打印如下:

1)要在内核中添加配置如下,否则Call Trace只打印地址而不会打印地址对应的符号

General Setup -->

    -*- Configure standard kernel features -->

        [*] Load all symbols for debugging/ksymoops


2)上图中一些符号的意思

epc: exception program counter

ra: return address


2、查看System.map文件

在Call Trace中有一行“[<8029f72c>] dwc_otg_pcd_ep_queue+0xec/0x888”

意思是dwc_otg_pcd_ep_queue函数有0x888这么大,Oops发生在这个函数的0xec偏移处,

从System.map文件看到dwc_otg_pcd_ep_queue函数起始地址是0x8029f640,

于是发生Oops发生在0x8029f640 + 0xec = 0x8029f72c

说明:System.map文件保存函数等符号的地址。


3、使用gdb调试

编译时需要选择compile with debug info选项

执行gdb vmlinux.elf,进入gdb终端,

1)执行list *0x8029f72c或者list *(dwc_otg_pcd_ep_queue+0xec),如下,直接可以看出哪个文件哪一行了。




4、其他

这里有一篇文章介绍ARM系统上kernel panic的小例子

http://www.opensourceforu.com/2011/01/understanding-a-kernel-oops/




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luckywang1103

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值