本文承接自上一篇文章Linux服务器远程崩溃查看dmesg实践及踩坑,在上一篇文章中介绍了如何通过配置kdump获取dmesg,此外,kdump还会为我们拍下崩溃时OS的快照:vmcore。博主发现国内的内核调试相关文档杂糅散乱,因此本文对现有的介绍vmcore的文章进行汇总,并介绍一些现有博客之外的个人实践体会。
crash
工具的安装与vmcore的启动,外加一些vmcore的使用方法,但是对小白不友好crash
内部命令的使用,但是对小白不友好大多数博客给出的命令为:
crash vmlinux的地址 vmcore的地址
然而却少有一篇博客介绍对应vmlinux
地址亦或是vmcore
的地址在哪里。本节以初学者的视角提供一些踩坑实践记录,持续更新~
一般来说,本机编译的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
一般来说,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
Linux内核开发从来不是一件容易的事,工欲善其事,必先利其器,掌握调试方法才能更加深入去理解系统设计者的精明。OK,不多说了,本博文持续更新,起飞