您的位置:首页 > 汽车 > 时评 > 幼儿园主题网络图设计_济南智能网站建设_网页设计实训报告_媒体发稿费用

幼儿园主题网络图设计_济南智能网站建设_网页设计实训报告_媒体发稿费用

2024/12/26 21:53:00 来源:https://blog.csdn.net/weixin_40289409/article/details/144194792  浏览:    关键词:幼儿园主题网络图设计_济南智能网站建设_网页设计实训报告_媒体发稿费用
幼儿园主题网络图设计_济南智能网站建设_网页设计实训报告_媒体发稿费用

0.前言

1.引用:

解决Linux内核问题实用技巧之 - Crash工具结合/dev/mem任意修改内存-腾讯云开发者社区-腾讯云

解决Linux内核问题实用技巧之-dev/mem的新玩法-腾讯云开发者社区-腾讯云

ubuntu内核转储分析——kdump和crash的下载和使用_ubuntu kdump-CSDN博客

Ubuntu的Kdump_ubuntu22 kdump-CSDN博客

Index of /pool/main/l/linux

Linux下用火焰图进行性能分析_perf火焰图分析-CSDN博客

2.Ubuntu22.04安装 kdump

本小节主要参考了如下博文里的内容,在Ubuntu22.04上安装内核转存分析工具kdump。

ubuntu内核转储分析——kdump和crash的下载和使用_ubuntu kdump-CSDN博客

安装命令

sudo apt install linux-crashdump

配置kexec-tools

安装时,会弹框确认是否在崩溃时,通过 kexec-tools 快速重新启动到一个新的内核,以便进行崩溃信息的收集和分析。
这里选择Yes

如果选择了No,也可以手动启动

sudo dpkg-reconfigure kexec-tools 

这将修改/etc/init.d/kexec中的LOAD_KEXEC ,LOAD_KEXEC=true(未测试)

配置kdump-tools

上面的内容选择了Yes,接着继续弹出一个框,这里仍然选择Yes

如果选择了No,也可以手动启动

sudo dpkg-reconfigure kdump-tools

配置成功后生成的文件

安装成功后,将会在/etc/init.d中多了几个文件

kdump-tools
kexec
kexec-load

确认kdump-tool是否启用 

sudo kdump-config show

如果未安装kdump,将会提示

kdump-config: command not found

如果安装了kdump-config, 将会提示:

 * no crashkernel= parameter in the kernel cmdline
DUMP_MODE:        kdump
USE_KDUMP:        1
KDUMP_SYSCTL:     kernel.panic_on_oops=1
KDUMP_COREDIR:    /var/crash
crashkernel addr: 
   /var/lib/kdump/vmlinuz
kdump initrd: 
   /var/lib/kdump/initrd.img
current state:    Not ready to kdump

kexec command:
  no kexec command recorded

如果是如上提示,需要把Ubuntu22.04系统给重启一下,重启之后再次执行命令。

sudo kdump-config show

命令输出结果显示kdump已经配置成功。

3.手动触发内核崩溃,生成转储文件

第一步:

sudo sh -c "echo 1 > /proc/sys/kernel/sysrq"

第二步

sudo sh -c "echo c > /proc/sysrq-trigger"

这里不直接使用sudo echo x > /proc/xxx/xxx/xxx的原因是使用它会报错Permission denied,是因为重定向符号 “>” 也是 bash 的命令。sudo 只是让 echo 命令具有了 root 权限,但是没有让 “>” 命令也具有root 权限,所以 bash 会认为这个命令没有写入信息的权限。

其中echo 1 > /proc/sys/kernel/sysrqecho c > /proc/sysrq-trigger是用来触发SysRq功能的命令。SysRq功能是一种种魔术系统请求键,可以让用户向内核发送一些特殊的命令,以获取或控制系统的信息或状态。

echo 1 > /proc/sys/kernel/sysrq向sysrq文件中写入1是为了开启SysRq功能(写入0是关闭SysRq功能),但是这需要内核支持(CONFIG_MAGIC_SYSRQ选项),它会让内核响应用户输入的任何操作,只要内核没有挂掉。此功能只是临时开启,重启后SysRq会自动关闭。如果想让此功能一直生效,在/etc/sysctl.conf里面设置kernel.sysrq的值为1. 重新启动以后,此功能将会自动打开。

echo c > /proc/sysrq-trigger是用来触发故意让系统统崩溃(crash)命令的命令,它会让内核立即即崩溃,并且不会管你有没有数据没有写回回磁盘,也不卸载载磁盘,而是完完全全地关机。

执行后,等待系统重启,在/var/crush中会生成几个文件:

其中

  • kexec_cmd是默认就有的
  • dmesg.202401021909:这个文件是系统内核崩溃时的内核日志,它记录了内核崩溃的原因和上下文信息,可以用来分析内核崩溃的原因和过程。
  • dump.202401021909:这个文件是系统内核崩溃时的内核内存转储文件,它包含了内核崩溃时的内存状态,可以用来分析内核崩溃的现场和数据。
  • linux-image-3.13.0-24-generic-202401021909.crash:这个文件是系统内核崩溃时,使用apport命令来生成的崩溃报告文件,它包含了系统内核的版本和配置信息,以及内核崩溃的时间和环境信息,可以用来报告和追踪内核崩溃的问题。

补充知识一:sysrq的参数

  • b - 即时重新启动系统
  • o - 即时关机
  • s - 即时同步所有挂载的文件系统
  • u - 即时重新挂载所有的文件系统为只读
  • p - 导出当前CPU寄存器信息和标志位的信息
  • t - 导出线程状态信息
  • m - 导出关于内存分配的信息
  • c - 故意让系统统崩溃(在使用netdump或diskdump的时候有用)
  • e - 杀死所有进程除了init使用SIGTERM
  • i - 杀死所有进程除了init使用SIGKILL

当一个sysrq命令被触发,内核将会打印信息到内核的环形缓冲并输出到系统控制台。此信息一般也会通过syslog输出到/var/log/messages或/var/log/syslog。有时候,可能系统已无法响应,syslogd可能无法记录此信息。在这种情况下,建议你设置一个串口终端来收集这个信息。

4.获取Ubuntu22.04对应的vmlinx

查看是否存在vmlinux

ls //usr/lib/debug/boot

下载namelist

  • namelist是一个包含了内核调试符号的vmlinux内核镜像文件
  • 内核调试符号是指包含了调试信息的内核镜像文件,它可以帮助开发者或者分析者定位内核的错误或者性能问题。

 下载namelist的方法可以参考我写的另一篇博文

获取Ubuntu-22.04.1 对应的vmlinux文件-CSDN博客

 按照博文中的操作步骤获取到Ubuntu22.04对应的带有符号调试信息的 vmlinux文件,这个vmlinux文件就是我们使用 'crash' 工具分析内核cras 的 codedump 文件所需要的。

ls /usr/lib/debug/boot

5.使用crash工具分析内核coredump文件

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com