博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
制造内核崩溃并使用crash分析内核崩溃产生的vmcore文件
阅读量:7303 次
发布时间:2019-06-30

本文共 1082 字,大约阅读时间需要 3 分钟。

制造内核崩溃并使用crash分析内核崩溃产生的vmcore文件
1,安装kernel-debuginfo$(uname -r).rpm和kernel-debuginfo-common-$(uname -r).rpm
2,开启内核崩溃转储
service kdump start
3,开启Magic System Request Key功能
echo 1 >/proc/sys/kernel/sysrq
4,永久开启Magci System Request Key功能
编辑/etc/sysctl.conf文件使kernel.sysrq的值为1,1表示开启 0表示关闭
vim /etc/sysctl.conf 
kernel.sysrq = 1 
5,制造系统崩溃
echo c >/proc/sysrq-trigger
6,等待系统重启后重新登录进入分析崩溃产生的vmcore文件
6.1 使用crash分析vmcore文件
crash   /usr/lib/debug/lib/module/2.6.32-431.el6.x86_64/vmlinux   /var/crash/127.0.0.1-2017-04-05-15\:12\:12/vmcore
 
6.2 查看崩溃前的系统调用
crash> bt
 
从上图我们看到了一个异常[exception RIP: sysrq_handle_crash+22]。下面进一步对这个调用的函数进行分析
6.3 反汇编该段函数
crash> dis -l  sysrq_handle_crash+22
 
如图可以看到出现异常的地方是在/usr/src/debug/kernel-2.6.32-431.el6/linux-2.6.32-431.el6.x86_64/drivers/char/sysrq.c:文件的130行的地方,接下来我们查看一下该文件的130行写着什么
6.4 分析异常函数所对应的文件源码
 
从上图可以看出该函数是强制崩溃,代码也给出了注释:/* force panic */ ,把这段代码copy出来用gdb进行调试会发现报SIGSEGV的错,如下图
 
program received signal SIGSEGV,Segmentation fault. 经过查阅资料得知SIGSEGV信号是无效的的内存访问。就这样问题被一步一步的找出了,此处是人为调用了系统的强制崩溃,只是为了帮助理解分析系统崩溃的思路和过程。

转载于:https://www.cnblogs.com/sonwnja/p/6802844.html

你可能感兴趣的文章
CentOS中简单架设OwnCloud个人云网盘
查看>>
把IDL说明编译成面向对象程序设计语言的实代码后
查看>>
Linux下nagio安装与配置
查看>>
解决SVN错误:Can’t move ‘.svn/tmp/entries’ to ‘.svn/entries’
查看>>
Zabbix高可用,实现zabbix的无缝切换,无故障时间
查看>>
企业IT外包服务流程
查看>>
iOS 文件操作
查看>>
Windows 下 git log 中文乱码解决
查看>>
应用eclipse统计项目代码行数
查看>>
Windows 运维技巧
查看>>
Redis学习笔记(1)——概述
查看>>
负载均衡—nginx反向代理
查看>>
VBA中使用InputBox方法
查看>>
django problem
查看>>
Spring获取Bean的几种方式
查看>>
Android webrtc硬件编解码的坑
查看>>
Axis2和已有web项目集成
查看>>
iOS 计算时间差CFAbsoluteTimeGetCurrent()
查看>>
hive,shark,sparkSQL,hive on spark,impala,drill比较
查看>>
Netty5 Read事件处理过程_源码讲解
查看>>