制造内核崩溃并使用crash分析内核崩溃产生的vmcore文件

摘要:
就这样问题被一步一步的找出了,此处是人为调用了系统的强制崩溃,只是为了帮助理解分析系统崩溃的思路和过程。
制造内核崩溃并使用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
制造内核崩溃并使用crash分析内核崩溃产生的vmcore文件第1张
6.2 查看崩溃前的系统调用
crash> bt
制造内核崩溃并使用crash分析内核崩溃产生的vmcore文件第2张
从上图我们看到了一个异常[exception RIP: sysrq_handle_crash+22]。下面进一步对这个调用的函数进行分析
6.3 反汇编该段函数
crash> dis -l sysrq_handle_crash+22
制造内核崩溃并使用crash分析内核崩溃产生的vmcore文件第3张
如图可以看到出现异常的地方是在/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 分析异常函数所对应的文件源码
制造内核崩溃并使用crash分析内核崩溃产生的vmcore文件第4张
从上图可以看出该函数是强制崩溃,代码也给出了注释:/* force panic */ ,把这段代码copy出来用gdb进行调试会发现报SIGSEGV的错,如下图
制造内核崩溃并使用crash分析内核崩溃产生的vmcore文件第5张
program received signal SIGSEGV,Segmentation fault. 经过查阅资料得知SIGSEGV信号是无效的的内存访问。就这样问题被一步一步的找出了,此处是人为调用了系统的强制崩溃,只是为了帮助理解分析系统崩溃的思路和过程。

免责声明:文章转载自《制造内核崩溃并使用crash分析内核崩溃产生的vmcore文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Ubuntu安装mysql步骤meta-data的使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

JS学习笔记(一)JS处理JSON数据

在数据传输过程中,json以文本的形式传输,也就是字符串,而JS则对json对象进行操作。因此,JSON对象和JSON字符串之间的相互转换是关键。如果系统提示您找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低。...

Linux系统添加永久静态路由的方法

按照Linux启动的顺序,rc本地的内容在Linux中的所有服务启动后执行。也就是说,local的内容在netfs之后执行。也就是说,当netfs启动时,不会添加服务器上的静态路由,因此无法成功装载netfs。...

nginx重启

方法二:在启动命令-c前加-t2、重启Nginx服务方法一:进入nginx可执行目录sbin下,输入命令./nginx-sreload即可方法二:查找当前nginx进程号,然后输入命令:kill-HUP进程号实现重启nginx服务...

nginx 浏览php的时候会变成下载

php的时候会变成下载:这是因为nginx没有设置好碰到php文件时,要传递到后方的php解释器。当然啦,你的php-fpm解析器也需要正常运行,并监听好9000端口,才能最终生效并有效处理php脚本。windows下开启监听的办法,php-cgi.exe-b127.0.0.1:9000-cphpphp.ini待续:。。。。。...

python中如何调用.py文件

步骤3来自。文件名不应与Python中的文件名相同,并且没有必要添加Py后缀。询问开发人员,“理论上,如果当前包的内容已经加载到python虚拟机中,如果您再次加载包,它将不会输出,导入相当于无效”。...

mac 安装git

gitconfig--globaluser.name"your_name"gitconfig--globaluser.email"your_email@gmail.com"配置信息可以更改,以后想要更改使用上面指令就可以。同时可以使用gitconfig--list指令查看Git的配置信息。gitconfigcore.ignorecasefalse生成密钥Gi...