• 制造内核崩溃并使用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
     
    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信号是无效的的内存访问。就这样问题被一步一步的找出了,此处是人为调用了系统的强制崩溃,只是为了帮助理解分析系统崩溃的思路和过程。
  • 相关阅读:
    break,continue,return的区别
    java中for循环的优化
    Jquery中click函数调用遇到的诡异问题
    MVC中Controller与View的类型绑定问题
    基于8019芯片的在9S12下移植成功的TCP/IP协议族(续)
    MVC中Partialiew使用的一点小总结
    基于8019芯片的在9S12下移植成功的TCP/IP协议族(一)
    9S12单片机的模块驱动程序备忘
    prim算法(zoj1203)
    win7下安装fedora
  • 原文地址:https://www.cnblogs.com/sonwnja/p/6802844.html
Copyright © 2020-2023  润新知