ubuntu 20.04 搭建crash dump问题分析环境
ubuntu 20.04 搭建crash dump问题分析环境
- 1 安装依赖软件
- 1.1 linux-dump
- 1.2 kexec-tools
- 1.3 安装crash工具
- 1.4 安装gdb调试工具
- 1.5 安装ubuntu内核调试符号
- 1.5.1 GPG 秘钥导入
- 1.5.2 添加仓库配置
- 1.5.3 更新软件包
- 1.5.4 下载和安装内核调试符号
- 1.5.5 验证内核调试符号已经被安装
- 1.6 配置转储内存大小
- 2 触发系统异常验证
- 2.1 开启kdump服务
- 2.2 查看kdump服务当前的状态
- 2.3 手动触发crash dump
- 2.3.1 切换为 root 用户
- 2.3.2 触发crash dump
- 3 kernel dump文件分析
- 3.1 crash dump文件的位置
- 3.2 crash工具分析crash dump文件
- 4 遇到的问题以及解决办法
- 4.1 'makeinfo' is missing on your system
- 4.1.1 问题现象
- 4.1.2 解决方法
- 4.2 crash工具和主机安装的gdb版本不一致导致的异常
- 4.2.1 问题的现象
- 4.2.2 解决办法
- 4.3 /dev/mem: Operation not permitted
- 4.3.1 问题的现象
- 4.3.2 解决方法
主机环境和内核版本信息:
test@test:~/software/crash$ uname -r
5.15.0-74-generic
test@test:~/software/crash$test@test:~/software/crash$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.6 LTS"
test@test:~/software/crash$
1 安装依赖软件
参考了Ubuntu Kernel crash dump这篇文章
1.1 linux-dump
sudo apt install linux-crashdump
1.2 kexec-tools
sudo apt-get install kexec-tools
1.3 安装crash工具
sudo apt install crash
1.4 安装gdb调试工具
sudo apt-get install gdb
1.5 安装ubuntu内核调试符号
sudo apt-get install linux-image-$(uname -r)-dbgsym
如果通过上面的命令安装ubuntu内核调试符号,则需要通过下面的方法去安装,参考文章:安装ubuntu内核调试符号
1.5.1 GPG 秘钥导入
确保您拥有系统的 GPG 密钥。适用于16.04 及更高版本的 Ubuntu :
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C8CAB6595FDFF622
对于旧的发布版本:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ECDCAD72428D7C0
1.5.2 添加仓库配置
codename=$(lsb_release -c | awk '{print $2}')
sudo tee /etc/apt/sources.list.d/ddebs.list << EOF
deb http://ddebs.ubuntu.com/ ${codename} main restricted universe multiverse
deb http://ddebs.ubuntu.com/ ${codename}-security main restricted universe multiverse
deb http://ddebs.ubuntu.com/ ${codename}-updates main restricted universe multiverse
deb http://ddebs.ubuntu.com/ ${codename}-proposed main restricted universe multiverse
EOF
1.5.3 更新软件包
sudo apt-get update
1.5.4 下载和安装内核调试符号
sudo apt-get install linux-image-$(uname -r)-dbgsym
1.5.5 验证内核调试符号已经被安装
包含调试信息的文件名为 vmlinux-XXX-debug,其中 XXX 是内核版本。该文件存储在 /usr/lib/debug/boot 目录下。
1.6 配置转储内存大小
修改配置/etc/default/grub.d/kdump-tools.cfg,以支持kernel crash dump现场保存。
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT crashkernel=384M-:512M"
2 触发系统异常验证
2.1 开启kdump服务
systemctl start kdump-tools-dump.servicesystemctl enable kdump-tools-dump.service
2.2 查看kdump服务当前的状态
test@test:~/software/crash$ service kdump-tools-dump status
● kdump-tools-dump.service - Kernel crash dump capture serviceLoaded: loaded (/lib/systemd/system/kdump-tools-dump.service; static; vendor preset: enabled)Active: active (exited) since Tue 2023-11-14 10:19:58 CST; 56s agoMain PID: 126662 (code=exited, status=0/SUCCESS)Tasks: 0 (limit: 37610)Memory: 0BCGroup: /system.slice/kdump-tools-dump.service11月 14 10:19:58 test systemd[1]: Starting Kernel crash dump capture service...
11月 14 10:19:58 test kdump-tools[126662]: Starting kdump-tools:
11月 14 10:19:58 test kdump-tools[126669]: * Cannot change symbolic links when kdump is loaded
11月 14 10:19:58 test systemd[1]: Finished Kernel crash dump capture service.
test@test:~/software/crash$
2.3 手动触发crash dump
2.3.1 切换为 root 用户
sudo -s
2.3.2 触发crash dump
echo 1 > /proc/sys/kernel/sysrqecho c > /proc/sysrq-trigger
3 kernel dump文件分析
3.1 crash dump文件的位置
test@test:~/software/crash$ ls /var/crash/
202311132045 kexec_cmd linux-image-5.15.0-74-generic-202311132357.crash _opt_kingsoft_wps-office_office6_wpscloudsvr.1000.uploaded _usr_bin_crash.0.uploaded
202311132231 linux-image-5.15.0-74-generic-202311132045.crash _opt_kingsoft_wps-office_office6_wpscloudsvr.1000.crash _usr_bin_crash.0.crash
202311132357 linux-image-5.15.0-74-generic-202311132231.crash _opt_kingsoft_wps-office_office6_wpscloudsvr.1000.upload _usr_bin_crash.0.upload
test@test:~/software/crash$
3.2 crash工具分析crash dump文件
test@test:~/software/crash$ sudo crash -d /usr/bin/gdb /usr/lib/debug/boot/vmlinux-5.15.0-74-generic /var/crash/202311132357/dump.202311132357 crash 8.0.3++
Copyright (C) 2002-2022 Red Hat, Inc.
Copyright (C) 2004, 2005, 2006, 2010 IBM Corporation
Copyright (C) 1999-2006 Hewlett-Packard Co
Copyright (C) 2005, 2006, 2011, 2012 Fujitsu Limited
Copyright (C) 2006, 2007 VA Linux Systems Japan K.K.
Copyright (C) 2005, 2011, 2020-2022 NEC Corporation
Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc.
Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc.
Copyright (C) 2015, 2021 VMware, Inc.
This program is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions. Enter "help copying" to see the conditions.
This program has absolutely no warranty. Enter "help warranty" for details.GNU gdb (GDB) 10.2
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
Find the GDB manual and other documentation resources online at:<http://www.gnu.org/software/gdb/documentation/>.For help, type "help".
Type "apropos word" to search for commands related to "word"...KERNEL: /usr/lib/debug/boot/vmlinux-5.15.0-74-genericDUMPFILE: /var/crash/202311132357/dump.202311132357 [PARTIAL DUMP]CPUS: 16DATE: Mon Nov 13 23:56:58 CST 2023UPTIME: 00:11:00
LOAD AVERAGE: 0.71, 0.84, 0.58TASKS: 1636NODENAME: testRELEASE: 5.15.0-74-genericVERSION: #81~20.04.2-Ubuntu SMP Fri May 26 19:56:20 UTC 2023MACHINE: x86_64 (2900 Mhz)MEMORY: 31.8 GBPANIC: "Kernel panic - not syncing: sysrq triggered crash"PID: 10269COMMAND: "bash"TASK: ffff89a4d1334d40 [THREAD_INFO: ffff89a4d1334d40]CPU: 0STATE: TASK_RUNNING (PANIC)crash> bt
PID: 10269 TASK: ffff89a4d1334d40 CPU: 0 COMMAND: "bash"#0 [ffff94d441397c48] machine_kexec at ffffffff9688afe0#1 [ffff94d441397ca8] __crash_kexec at ffffffff96998c02#2 [ffff94d441397d78] panic at ffffffff974cf4b6#3 [ffff94d441397df8] sysrq_handle_crash at ffffffff96feea5a#4 [ffff94d441397e08] __handle_sysrq.cold at ffffffff97524bf2#5 [ffff94d441397e50] write_sysrq_trigger at ffffffff96fef548#6 [ffff94d441397e68] proc_reg_write at ffffffff96c23b57#7 [ffff94d441397e88] vfs_write at ffffffff96b83a76#8 [ffff94d441397ec0] ksys_write at ffffffff96b85de7#9 [ffff94d441397f00] __x64_sys_write at ffffffff96b85e8a
#10 [ffff94d441397f10] do_syscall_64 at ffffffff97571d39
#11 [ffff94d441397f28] do_syscall_64 at ffffffff97571d49
#12 [ffff94d441397f50] entry_SYSCALL_64_after_hwframe at ffffffff97600099RIP: 00007fc202171077 RSP: 00007ffe9fcff018 RFLAGS: 00000246RAX: ffffffffffffffda RBX: 0000000000000002 RCX: 00007fc202171077RDX: 0000000000000002 RSI: 000055c60be1a9e0 RDI: 0000000000000001RBP: 000055c60be1a9e0 R8: 000000000000000a R9: 0000000000000001R10: 000055c60b144017 R11: 0000000000000246 R12: 0000000000000002R13: 00007fc2022506a0 R14: 00007fc20224c4a0 R15: 00007fc20224b8a0ORIG_RAX: 0000000000000001 CS: 0033 SS: 002b
crash>
4 遇到的问题以及解决办法
4.1 ‘makeinfo’ is missing on your system
4.1.1 问题现象
/home/test/software/crash/gdb-10.2/missing: line 81: makeinfo: command not found
WARNING: 'makeinfo' is missing on your system.You should only need it if you modified a '.texi' file, orany other file indirectly affecting the aspect of the manual.You might want to install the Texinfo package:<http://www.gnu.org/software/texinfo/>The spurious makeinfo call might also be the consequence ofusing a buggy 'make' (AIX, DU, IRIX), in which case you mightwant to install GNU make:<http://www.gnu.org/software/make/>
make[5]: *** [Makefile:542: bfd.info] Error 127
make[4]: *** [Makefile:1643: info-recursive] Error 1
make[3]: *** [Makefile:2771: all-bfd] Error 2
make[3]: *** Waiting for unfinished jobs....
config.status: creating Makefile
config.status: creating import/Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing default commands
make[2]: *** [Makefile:860: all] Error 2
crash build failed
make[1]: *** [Makefile:263: gdb_merge] Error 1
make: *** [Makefile:254: all] Error 2
4.1.2 解决方法
sudo apt-get update
sudo apt-get install texinfo
4.2 crash工具和主机安装的gdb版本不一致导致的异常
4.2.1 问题的现象
GNU gdb (GDB) 7.6
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu"...WARNING: kernel relocated [344MB]: patching 145829 gdb minimal_symbol valuesplease wait... (patching 145829 gdb minimal_symbol values) Segmentation faulttest@test:~/software/crash$ gdb --version
GNU gdb (Ubuntu 10.2-0ubuntu1~20.04~1) 10.2
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
test@test:~/software/crash$
4.2.2 解决办法
sudo apt purge crashgit clone https://github.com/crash-utility/crash.gitcd crashmake -j8
sudo make install
crash --version
4.3 /dev/mem: Operation not permitted
4.3.1 问题的现象
sudo crash /usr/lib/debug/boot/vmlinux-5.15.0-74-genericcrash 7.2.8
Copyright (C) 2002-2020 Red Hat, Inc.
Copyright (C) 2004, 2005, 2006, 2010 IBM Corporation
Copyright (C) 1999-2006 Hewlett-Packard Co
Copyright (C) 2005, 2006, 2011, 2012 Fujitsu Limited
Copyright (C) 2006, 2007 VA Linux Systems Japan K.K.
Copyright (C) 2005, 2011 NEC Corporation
Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc.
Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc.
This program is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions. Enter "help copying" to see the conditions.
This program has absolutely no warranty. Enter "help warranty" for details.crash: /dev/mem: Operation not permitted
4.3.2 解决方法
参考1.6节,修改/etc/default/grub.d/kdump-tools.cfg文件,添加下面的配置以支持
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT` crashkernel=384M-:512M"
然后修改/dev/mem的权限
sudo chmod 777 /dev/mem
相关文章:
ubuntu 20.04 搭建crash dump问题分析环境
ubuntu 20.04 搭建crash dump问题分析环境 1 安装依赖软件1.1 linux-dump1.2 kexec-tools1.3 安装crash工具1.4 安装gdb调试工具1.5 安装ubuntu内核调试符号1.5.1 GPG 秘钥导入1.5.2 添加仓库配置1.5.3 更新软件包1.5.4 下载和安装内核调试符号1.5.5 验证内核调试符号已经被安装…...
算法训练营一刷 总结篇
今天就是Day60了,坚持了两个月的算法训练营在今天结束了。这两个月中,学习、练习了许许多多的算法,坚持每天完成博客来打卡,养成了写C的习惯,现在相比于Python我反而更喜欢思路严谨的C。感谢这个平台,感谢C…...
Linux中的MFS分布式文件系统
目录 一、MFS分布式文件系统 1、MooseFS简介 2、Moose File System的体系结构 (1)MooseFS Master (2)MooseFS Chunk Server (3)MooseFS Metalogger (4)MooseFS Client &…...
气相色谱质谱仪样品传输装置中电动针阀和微泄漏阀的解决方案
标题 摘要:针对目前国内外各种质谱仪压差法进样装置无法准确控制进气流量,且无相应配套产品的问题,本文提出了相应的解决方案和配套部件。解决方案主要解决了制作更小流量毛细管和毛细管进气端真空压力精密控制问题,微流量毛细管的…...
ArkTS基础知识
ArkTS基础知识 ArkUI开发框架 ArkTS声明式开发范式 装饰器: 用来装饰类,结构体,方法及变量。如: Entry:入口组件 Component :表示自定义组件 State 都是装饰器:组件中的状态变量,该…...
Kotlin学习(二)
2.kotlin学习(二) 1.条件控制 package com.simon.secondfun main(args: Array<String>) {//ifvar a 1var b 2var max:Intif (a > b){max a}else{max b}//作为表达式结果赋值给max1 感觉这个简单啊var max1 if(a>b)a else bprintln(ma…...
LangChain 6根据图片生成推广文案HuggingFace中的image-caption模型
根据图片生成推广文案, 用的HuggingFace中的image-caption模型 LangChain 实现给动物取名字,LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数…...
QFontDialog开发详解
QFontDialog 类是 Qt 框架中用于选择字体的对话框类。它允许用户选择字体的各种属性,如字体名称、字号、粗体、斜体等。以下是 QFontDialog 的一些常见用法和详解: 一、QFontDialog基本用法 #include <QApplication> #include <QFontDialog> #include <QMes…...
【C++进阶之路】第七篇:异常
文章目录 一、C语言传统的处理错误的方式二、 C异常概念三、异常的使用1.异常的抛出和捕获2.异常的重新抛出3.异常安全4.异常规范 四、自定义异常体系五、C标准库的异常体系(了解)六、异常的优缺点 一、C语言传统的处理错误的方式 传统的错误处理机制&am…...
shell 判断文件是否存在(csh bash)
文章目录 前言1. -e 判断文件是否存在2. -f 判断文件是否存在且为普通文件3. -d 判断文件是否存在且为目录3. -s 判断文件是否存在且不为空4. -r 判断文件是否存在且可读5. -w 判断文件是否存在且可写6. -x 判断文件是否存在且可执行 前言 Shell 编程能提升我们工作效率&#…...
第六年到第十年是分水岭
我今年懈怠了,觉得就这样了,看到知乎上有个大神的帖子,深受触动,前五年都差不多,第六年到第十年才是分水岭,是否愿意继续努力,才是关键。拷贝如下: 作者:技术王 来源&…...
关于标准库中的string类 - c++
目录 关于string类 string类的常用接口 string类常用接口的简单模拟实现 关于string类 string类在cplusplus.com的文档介绍 1. string是表示字符串的字符串类 2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。 3. string在…...
Chrome添加扩展程序
Crx4Chrome 下载crx 打开扩展程序 如果拖动crx文件到扩展程序提示只能通过Chrome应用商店添加此项内容 修改crx文件后缀为zip并解压,再拖动到扩展程序 Vue.js devtools...
C++单调向量算法:132模式枚举1简洁版
本题不同解法 包括题目及代码C二分查找算法:132 模式解法一枚举3C二分查找算法:132 模式解法二枚举2代码简洁C二分查找算法:132 模式解法三枚举1性能最佳C单调向量算法:132 模式解法三枚举1代码更简洁C二分查找算法:1…...
【ARFoundation学习笔记】2D图像检测跟踪
写在前面的话 本系列笔记旨在记录作者在学习Unity中的AR开发过程中需要记录的问题和知识点。主要目的是为了加深记忆。其中难免出现纰漏,更多详细内容请阅读原文以及官方文档。 汪老师博客 文章目录 2D图像检测创建一个图像检测工程图像追踪的禁用和启用多图像追踪…...
计算机算法分析与设计(24)---分支限界章节复习
文章目录 一、分支界限法介绍二、旅行商问题应用三、装载问题应用3.1 问题介绍与分析3.2 例题 四、0-1背包问题应用4.1 问题介绍与分析4.2 例题 一、分支界限法介绍 二、旅行商问题应用 三、装载问题应用 3.1 问题介绍与分析 3.2 例题 四、0-1背包问题应用 4.1 问题介绍与分析…...
二十三种设计模式-解密状态模式:优雅地管理对象状态
在软件开发中,经常会遇到需要根据对象的状态来改变其行为的情况。传统的实现方式可能涉及到大量的条件语句或者使用标志位来跟踪状态,导致代码复杂、难以维护。 而状态模式(State Pattern)可以提供一种优雅且灵活的解决方案&#…...
git常常用命令
这篇文章中,一些简单的,大家都知道的git 命令我就不再赘述,我只写出来最近在项目中常用到的一些命令。这些命令可以帮助我更好的开发。 git stash 请大家设想下面的场景,你的本地有两个分支,develop,fix分支…...
C语言中的大端字节序和小端字节序是什么?如何进行字节序的转换?
C语言中的大端字节序和小端字节序以及字节序的转换 引言 在计算机科学中,字节序是指多字节数据在存储或传输过程中字节的排列顺序。在C语言中,特别是在涉及二进制数据的处理、网络通信以及硬件相关的编程中,了解大端字节序和小端字节序的概…...
Flutter dio Http请求之Cookie管理
在应用开发过程中,我们进行Http通讯时会使用Cookie进行验证,今天我们就着重讲解Flutter 网络请求插件dio的cookie使用。 首先,我们要进行插件引用 # HTTP 请求 dio: ^5.1.1 cookie_jar: ^4.0.8 dio_cookie_manager: ^3.0.0# 获取沙盒路径 p…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
