当前位置: 首页 > news >正文

内核调试:crash工具与vmcore实践

内核调试:crash工具与vmcore实践

    • 1. 资料汇总
    • 2. 实践踩坑
      • 2.1 本机vmlinux地址
      • 2.2 vmcore地址
    • 3. 总结

本文承接自上一篇文章Linux服务器远程崩溃查看dmesg实践及踩坑,在上一篇文章中介绍了如何通过配置kdump获取dmesg,此外,kdump还会为我们拍下崩溃时OS的快照:vmcore。博主发现国内的内核调试相关文档杂糅散乱,因此本文对现有的介绍vmcore的文章进行汇总,并介绍一些现有博客之外的个人实践体会。

1. 资料汇总

  • 【开发工具】【Kdump】解析kdump捕获的vmcore文件【三】:本文介绍crash工具的安装与vmcore的启动,外加一些vmcore的使用方法,但是对小白不友好
  • linux系统奔溃之vmcore:kdump 的亲密战友 crash:本文介绍crash内部命令的使用,但是对小白不友好

2. 实践踩坑

大多数博客给出的命令为:

crash vmlinux的地址 vmcore的地址 

然而却少有一篇博客介绍对应vmlinux地址亦或是vmcore的地址在哪里。本节以初学者的视角提供一些踩坑实践记录,持续更新~

2.1 本机vmlinux地址

一般来说,本机编译的vmlinux地址在/usr/lib/moduels/下:

[deadpool@localhost /]$ ls /usr/lib/modules/
4.18.0-305.10.2.el8_4.x86_64/ 4.18.0-348.7.1.el8_5.x86_64/  5.1.0/                        
4.18.0-305.12.1.el8_4.x86_64/ 4.18.0-348.el8.x86_64/        5.1.0-amd64-desktop+/ 

输入下述命令查看当前内核版本:

[deadpool@localhost /]$ uname -r
5.1.0

进入相应目录,vmlinux文件便在build文件夹下:

[deadpool@localhost /]$ ls /usr/lib/modules/5.1.0/build/
arch     CREDITS        fs       Kbuild   LICENSES     modules.builtin  README     security    usr
block    crypto         include  Kconfig  MAINTAINERS  modules.order    README.md  sound       virt
certs    Documentation  init     kernel   Makefile     Module.symvers   samples    System.map  vmlinux
COPYING  drivers        ipc      lib      mm           net              scripts    tools       vmlinux.o

2.2 vmcore地址

一般来说,vmcore的生成地址与kdump生成dmesg的地址相同,均在/var/crash/相应的目录下,例如:

[deadpool@localhost /]$ ls /var/crash/127.0.0.1-2022-08-31-22\:40\:30/
kexec-dmesg.log  vmcore  vmcore-dmesg.txt

3. 总结

Linux内核开发从来不是一件容易的事,工欲善其事,必先利其器,掌握调试方法才能更加深入去理解系统设计者的精明。OK,不多说了,本博文持续更新,起飞🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫

相关文章:

  • C++ Qt / VS2019 +opencv + onnxruntime 部署语义分割模型【经验】
  • 如何查看线程死锁
  • 代码源每日一题div2 可重排列
  • 【原创】基于Jsp+Servlet的仓库管理系统
  • 堡垒机部署
  • linux的man命令
  • 10 项目沟通管理
  • 三分钟了解JVM的垃圾回收和三色标记
  • MapStruct简单入门
  • Redis介绍、安装与初体验
  • 第七章Redis_Jedis_测试
  • 部署keepalived+LVS
  • C++ 三大特性之继承(二)重点:菱形虚拟继承
  • 来写个贪吃蛇小游戏吧(TypeScript版本)
  • 【ASM】字节码操作 Label 如何使用 生成 if 语句
  • php的引用
  • [笔记] php常见简单功能及函数
  • Android组件 - 收藏集 - 掘金
  • Brief introduction of how to 'Call, Apply and Bind'
  • JSONP原理
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • rc-form之最单纯情况
  • Spring Cloud中负载均衡器概览
  • ViewService——一种保证客户端与服务端同步的方法
  • Vue ES6 Jade Scss Webpack Gulp
  • Web设计流程优化:网页效果图设计新思路
  • 高性能JavaScript阅读简记(三)
  • 开发基于以太坊智能合约的DApp
  • 前端_面试
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 微信小程序--------语音识别(前端自己也能玩)
  • MyCAT水平分库
  • postgresql行列转换函数
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • ​configparser --- 配置文件解析器​
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #考研#计算机文化知识1(局域网及网络互联)
  • $.ajax,axios,fetch三种ajax请求的区别
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (Forward) Music Player: From UI Proposal to Code
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (离散数学)逻辑连接词
  • (三)Honghu Cloud云架构一定时调度平台
  • (学习日记)2024.02.29:UCOSIII第二节
  • (一) storm的集群安装与配置
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)http协议
  • (转)Windows2003安全设置/维护
  • .NET : 在VS2008中计算代码度量值
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .net程序集学习心得