kernel panic  表示 Linux  kernel 走到了一个不知道该怎么走下一步的状况,一

旦到这个情况,kernel就尽可能把它此时能获取的全部信息都打印出来,至于能打印出多少信息。

下面讲解几种用于查找出错函数定位的方法

首先看一下出错的kernel panic 现象,下面是一个kernel panic的出错log:

如上崩溃信息,可知发生崩溃的函数为rb_init_debugfs,

崩溃的地址为0x804386f8

1>在linux下,到工程的如下目录下:kernel/linux,找到文件vmlinux,执行命令gdb vmlinux:

在gdb命令下执行如下命令即可查找到出错函数所在的文件与行数

(gdb) b *0x804386f8

2>

如果不确定崩溃的地址是否是0x804386f8,可以在文件System.map中

查找函数rb_init_debugfs获取该函数的地址,然后加上偏移地址(本例中偏移地址为0x14 rb_init_debugfs+0x14/0x70)即可。

3>直接函数名加偏移量也可以

(gdb) b *rb_init_debugfs+0x14

上面是出错模块是编译进内核的,对于编译进内核的模块可以通过gdb vmlinux来确定出错函数所在的文件与行数。

那如果出错模块是动态加载进内核的该怎么办呢?

这就需要使用objdump进行反汇编操作了,使用如下命令,就会将C语言与汇编语言同时显示(需要加-g命令)

#objdump -S  **.o -g

如果使用上面命令,还是只显示汇编,而没有c语言的话,不用担心,在你编译驱动模块的Makefile中,编译成.o文件时,增加-g选项,对于新生成的.o文件再使用上面的命令就 可以看到汇编与c语言共存了。然后根据kernel panic提示中显示的函数名加上偏移量就能找到出错行了。

kernel panic 分析解决方法相关推荐

  1. ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法

    ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法 参考文章: (1)ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法 (2)ht ...

  2. Transaction rolled back because it has been marked as rollback-only分析解决方法

    Transaction rolled back because it has been marked as rollback-only分析解决方法 参考文章: (1)Transaction rolle ...

  3. kernel panic分析

    Linux kernel panic是很难定位和排查的重大故障,一旦系统发生了kernel panic,相关的日志信息非常少,而一种常见的排查方法-重现法–又很难实现,因此遇到kernel panic ...

  4. 【PostgreSQL保存】java.io.IOException: Tried to send an out-of-range integer as a 2-byte value 问题分析+解决方法

    1.问题分析 项目里有一个从MySQL导入PostgreSQL然后利用GIS相关插件计算空间数据的定时任务,上线某地市没有任何问题,后期上线到一个大城市,定时任务报错 java.io.IOExcept ...

  5. 用计算机计数 常常出错怎么办,提示“ultra dma crc错误计数”如何解决?原因分析+解决方法...

    电脑经过了一段的使用时间,硬盘难免会出现一些问题,最近有位win7系统用户使用鲁大师对硬盘进行扫描时,系统却提示"ultra dma crc错误计数",用户不知道怎么解决这个问题, ...

  6. Google Android 7.0 GMS测试常见fail项以及分析解决方法

    自从Google 7.0系统发布开始以来,所有使用Googl gms 包服务的第三方厂商出货必须都要过GMS认证,而在2018年预计Android 8.1系统上要求将更为严格..本篇博客列举展讯773 ...

  7. linux空指针异常能捕获到吗,一次kernel panic分析--空指针in handle_IRQ_event

    一.故障现象 内核panic,打印如下: 点击(此处)折叠或打开 Unable to handle kernel NULL pointer dereference at 000000000000003 ...

  8. kernel busy的解决方法jupyter notebook

    问题 内核正忙,连打印都不显示.正确的应该是这样: 解决 网上主流方法是:因为用户名是中文,只需创建一个用户为英文名即可.确实解决了我的问题,但新用户的好多配置和之前的不一样. 有一个更简单的方法,解 ...

  9. Linux中JAVA服务器CPU占用过高(分析解决方法)

    当发现生产环境CPU使用非常高,并且居高不下,导致服务器报警,需要快速定位,分析是什么地方占用CPU过高,推荐步骤如下: 1. 首先服务器查看占用cpu高的进程是哪一个,查出进程号 top 2.查询该 ...

  10. kernel panic问题分析(一)

    kernel panic 分析解决方法 kernel panic 表示 Linux kernel 走到了一个不知道该怎么走下一步的状况,一 旦到这个情况,kernel就尽可能把它此时能获取的全部信息都 ...

最新文章

  1. java.lang.NoSuchMethodException: getPackageSizeInfo
  2. Java IO类库之ObjectInputStream和ObjectOutPutStream
  3. 一位合格的博士生需要有哪些条件和素质?
  4. 数据库alter用法总结
  5. 关于《侏罗纪世界》你应该知道的18件事
  6. VSCode配置PyQt5和designer
  7. 再见实体店!推荐一个Python神器,能在线帮助小姐姐试衣服!
  8. 51单片机之串口通信、WiFi模块、蓝牙模块、4G模块
  9. 从怎样解题到怎样解决问题
  10. 五款好用的开源CRM系统推荐
  11. UVA11991 Easy Problem from Rujia Liu? stl
  12. 学习笔记-应用光学 典型光学系统
  13. C# .Net 小程序消息推送配置+详细代码
  14. 通过Windows防火墙禁止某程序(或软件)联网
  15. 厉害,竟然把VSCode玩成了IDEA的效果,有点哇塞
  16. 关于HTML中的滚动条
  17. linux把u盘只读文件,完美解决linux下U盘文件只读的问题
  18. 在虚拟机中使用摄像头
  19. C# 飞行棋小游戏 (控制台应用)
  20. VB程序设计教程(第四版)龚沛曾-实验8-7

热门文章

  1. .net System.IO之Stream的使用详解
  2. 在.h文件和.m文件里使用import指令有何区别?
  3. 在学校外边找了份工作
  4. flume学习(九):使用Morphline Interceptor
  5. 单目标决策---决策的分类
  6. ip_conntrack 模块的作用
  7. 公交驾校自动约车脚本
  8. 转帖:MySql日期格式化
  9. drools rule (二) LHS语法详解
  10. js 中通过 var 在声明的变量中写方法