Linux内核调试方法总结之sysrq
sysrq
【用途】
Sysrq被称为”魔术组合键”, 是内建于Linux内核的调试工具。只要内核没有完全锁住,不管内核在做什么事情,使用这些组合键都可以搜集包括系统内存使用、CPU任务处理、进程运行状态等系统运行信息。
【原理】【内核帮助文档kernel/Documentation/sysrq.txt】
首先,内核配置选项中要使能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阻塞状态的任务