首页 > 系统相关 >Linux内核调试方法

Linux内核调试方法

时间:2023-05-31 13:55:29浏览次数:42  
标签:enable 导出 echo trigger sysrq Linux proc 调试 内核

内核配置选项中要使能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 - 即时关机(如果机器设置并支持此项功能)。

标签:enable,导出,echo,trigger,sysrq,Linux,proc,调试,内核
From: https://www.cnblogs.com/kn-zheng/p/17445906.html

相关文章

  • Linux内网Yum仓库自动化部署脚本
    在当今快节奏的互联网时代,Linux系统在企业和组织中扮演着至关重要的角色。为了保证服务器环境的高效运行和软件的稳定性,及时进行软件包的安装和更新显得尤为重要。然而,在某些情况下,网络访问受限或不可行,这就给软件管理带来了挑战。为了解决这一问题,部署内网Yum仓库成为了一种有效的......
  • Linux shell standard input bugs All In One
    LinuxshellstandardinputbugsAllInOneerror❌warning:file'<standardinput>',aroundline110:tablewiderthanlinewidth$manvcgencmd>vcgencmd.mdwarning:file'<standardinput>',aroundline110:tablewi......
  • suse linux通过iso文件安装gcc
     mount-tiso9660-oloopSLES-11-SP4-DVD-x86_64-GM-DVD1.iso/media/#仅仅上述iso1即可不需要mountiso2mount-tiso9660-oloopSLES-11-SP4-DVD-x86_64-GM-DVD2.iso/media/DN1:~/bone#zypperar/media/suse11sp4iso正在添加安装源'suse11sp4iso'[完毕]成功......
  • STM32 Linux开发板丨STM32MP157开发板资料手册+实战教程+视频教程
    iTOP-STM32MP157开发板是基于意法半导体STARM双Cortex-A7核加单Cortex-M4核的一款多核异构处理器。Cortex-A7内核提供对开源操作系统Linux的支持,借助Linux系统庞大而丰富的软件组件处理复杂应用。M4内核上运行对于实时性要求严格的应用。开发板既有A7核,又有M4核,从学习者角度来看,既......
  • 程序员怎么玩转Linux
    Linux下可以使用Python编写爬虫程序,常用的爬虫框架有Scrapy和BeautifulSoup。Scrapy是一个基于Python的开源网络爬虫框架,可以快速高效地从网站上获取数据。它提供了强大的数据提取和处理功能,支持异步网络请求和分布式爬取等特性。BeautifulSoup是一个Python库,可以从HTML或XML文......
  • Linux学习笔记
    一、有哪些查看日志的命令?tail:用于查看最后几行文件的内容,常用于查看日志文件的尾部新添加的内容。例如:tail-f/var/log/system.log会实时输出system.log文件的末尾。less:用于查看大型文本文件的内容,可以按页或行进行查看,支持上下翻页、搜索等功能。例如:less/var/log/sys......
  • 驱动开发:内核解析PE结构导出表
    在笔者的上一篇文章《驱动开发:内核特征码扫描PE代码段》中LyShark带大家通过封装好的LySharkToolsUtilKernelBase函数实现了动态获取内核模块基址,并通过ntimage.h头文件中提供的系列函数解析了指定内核模块的PE节表参数,本章将继续延申这个话题,实现对PE文件导出表的解析任务,导出表......
  • linux 中判断文件是否存在、是否为目录、文件、是否为空
     001、判断文件是否存在(base)[root@PC1test4]#lsa.txtdir01(base)[root@PC1test4]#if[-ea.txt];thenecho"exist";fi##判断文件是否存在exist(base)[root@PC1test4]#lsa.txtdir01(base)[root@PC1test4]#if[-eb.txt];thenecho"exist......
  • Linux文件相关的学习
    一、查看文件信息ls-l查看文件的详细信息二、FHS:文件系统层级结构/根目录,所有的目录、文件、设备都在/之下。/bin存放命令的地方,其实/bin是/usr/bin的软链接,一般命令都放在/usr/bin中/boot系统启动相关的文件/dev设备文件目录/etc配置文件目录/mnt临时挂载点/ro......
  • 一分钟学一个 Linux 命令 - cd
    前言大家好,我是god23bin。欢迎来到这个系列,每天只需一分钟,记住一个Linux命令不成问题。今天让我们从cd命令开始,掌握在Linux系统中切换目录的技巧。什么是cd命令?cd命令来自这么一个词语,changedirectory,意思为「切换目录」,这是一个非常基础且常用的命令。顾名思义,cd......