zoukankan      html  css  js  c++  java
  • Linux内核调试方法

    内核配置选项中要使能CONFIG_MAGIC_SYSRQ选项,这样系统启动之后,会生成/proc/sysrq-trigger节点用于调试。

    其次,可以在/etc/sysctl.conf中设置kernel.sysrq=1默认使能sysq功能。也可以通过写/proc/sys/kernel/sysrq节点动态使能sysrq功能。写入不同的值使能不同的功能:

    0 - disable sysrq completely

    1 - enable all functions of sysrq

    2 - enable control of console   logging level

    4 - enable control of keyboard (SAK,   unraw)

    8 - enable debugging dumps of   processes etc.

    16 - enable sync command

    32 - enable remount read-only

    64 - enable signalling of processes   (term, kill, oom-kill)

    128- allow reboot/poweroff

    256- allow nicing of all RT tasks

    【使用说明】

    #echo m > /proc/sysrq-trigger 导出内存分配信息

    #echo t > /proc/sysrq-trigger 导出当前任务状态信息

    #echo p > /proc/sysrq-trigger 导出当前CPU寄存器和标志位信息

    #echo c > /proc/sysrq-trigger 产生空指针panic事件,人为导致系统崩溃

    #echo s > /proc/sysrq-trigger 即时同步所有挂载的文件系统

    #echo u > /proc/sysrq-trigger 即时重新挂载所有的文件系统为只读

    #echo w > /proc/sysrq-trigger转储处于uninterruptable阻塞状态的任务

    轻松搞死linux,介绍/proc/sysrq-trigger的强大功能  

    立即重启计算机      echo "b" > /proc/sysrq-trigger

    立即关闭计算机      echo "o" > /proc/sysrq-trigger

    导出内存分配的信息    echo "m"  > proc/sysrq-trigger        (可以用/var/log/message查看)Outputs memory statistics to the console

    导出当前CPU寄存器信息和标志位的信息     echo "p"  > proc/sysrq-trigger       (outputs all flags and registers to the console)

    导出线程状态信息        echo "t"  > proc/sysrq-trigger          (outputs a list of processes to the console)

    故意让系统崩溃            echo "c"  > proc/sysrq-trigger         (crashes the system without first unmounting file systems or syncing disks attached to the system)

    立即重新挂载所有的文件系统               echo "s"  > proc/sysrq-trigger     (attempts to sync disks attached to the system)

    立即重新挂载所有的文件系统为只读     echo "u"  > proc/sysrq-trigger     (attempts to unmount and remount all file systems as read-only)

    此外,还有两个类似于强制注销的功能

    e ---- kills all processes except init using SIGTERM

    i ---- kills all processes except init using SIGKILL

    当一个sysrq命令被触发,内核将会打印信息到内核的环形缓冲并输出到系统控制台。此信息一般也会通过syslog输出到/var/log/messages.
    有时候,可能系统已无法响应,syslogd可能无法记录此信息。在这种情况下,建议你设置一个串口终端来收集这个信息。
    那些类型的sysrq事件能被触发?
    sysrq功能被打开后,有几种sysrq事件能被触发。不同的内核版本可能会有些不同。但有一些是共用的:
    * m - 导出关于内存分配的信息,
    * t - 导出线程状态信息,
    * p - 导出当前CPU寄存器信息和标志位的信息,
    * c - 故意让系统崩溃(在使用netdump或diskdump的时候有用),
    * s - 即时同步所有挂载的文件系统,
    * u - 即时重新挂载所有的文件系统为只读,
    * b - 即时重新启动系统,
    * o - 即时关机(如果机器设置并支持此项功能)。
  • 相关阅读:
    POJ 1811 大整数素数判断 Miller_Rabin
    hdu 4940 无源汇有上下界最大流
    hdu 4975 最大流解决行列和求矩阵问题,用到矩阵dp优化
    hdu 4971 多校10最大权闭合图
    hdu 4888 最大流给出行列和求矩阵
    poj 3621最优比例生成环(01分数规划问题)
    poj 2728 最优比例生成树(01分数规划)模板
    最优比例生成树最优比率生成树 01分数规划问题
    poj 2553强连通+缩点
    poj 2831 次小生成树模板
  • 原文地址:https://www.cnblogs.com/klb561/p/8964206.html
Copyright © 2011-2022 走看看