内核调试: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,不多说了,本博文持续更新,起飞

你可能感兴趣的:(操作系统,linux,服务器,运维)