0.前言
🚀write in front🚀
🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
💬本文是我在公司工作接触到 /dev/mem 和 crash 内核调试工具时进行学习搜集到的资料,记录下来作为备忘,也希望能对大家有所帮助。📚
1.引用
Ubuntu的Kdump_ubuntu22 kdump-CSDN博客
https://superuser.com/questions/62575/where-is-vmlinux-on-my-ubuntu-installation
Ubuntu安装上的vmlinux在哪里?_ubuntu 缺少vmlinuz-CSDN博客
如何找到Linux vmlinux文件 - 问答 - 亿速云
2.正文
下载Ubuntu-22.04.1内核对应的带有调试符号信息的vmlinux文件,到如下网站下载
在Ubuntu-22.04中运行命令 'uname -r' 确认当前Ubuntu.22.04发行版对应的内核编译版本号
bash
chenhaoxu@chenhaoxu-VirtualBox:~$ uname -r
5.15.0-125-generic
chenhaoxu@chenhaoxu-VirtualBox:~$
在网站列表的 '.ddeb' 文件里下载对应的符号表文件,因为我安装的Virtualbox Ubuntu.22.04 虚拟机是64位的系统所以选择'AMD64'指令集的文件。
在Ubunt-22.04里执行 'weget xxxx' 下载对应版本号的 '.ddeb'文件。(注意:一定要确保下载的.ddeb文件和你自己的Ubuntu操作系统的实际内核版本对应的上)。
bash
wget http://ddebs.ubuntu.com/pool/main/l/linux/linux-image-unsigned-5.15.0-125-generic-dbgsym_5.15.0-125.135_amd64.ddeb
下载结束后,执行 'sudo dpkg xxx.ddeb'文件安装下载到的Ubuntu.22.04对应的内核调试文件。
这里问了下Chatgpt怎么使用 '.ddeb'文件
安装下载的Ubuntu.22.04对应的内核调试文件 '.ddeb'文件
bash
chenhaoxu@chenhaoxu-VirtualBox:/usr/lib/debug$ sudo dpkg -i linux-image-unsigned-5.15.0-125-generic-dbgsym_5.15.0-125.135_amd64.ddeb
等待命令执行成功
安装成功之后,就在 Ubuntu.22.04系统的 '/usr/lib/debug/boot'目录下的'vmlinux-5.15.0-125-generic'就是当前Ubuntu.22.04发行版本对应的带有调试符号信息的vmlinux文件。在使用 'crash' 工具分析 'vmcore' 文件时,就需要这个带有调试符号信息的vmlinux文件。
bash
/usr/lib/debug/boot/vmlinux-5.15.0-125-generic
bash
chenhaoxu@chenhaoxu-VirtualBox:/usr/lib/debug/boot$ file vmlinux-5.15.0-125-generic
vmlinux-5.15.0-125-generic: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=c16e53d723223eb1435bc4c06defb030ae80d1f4, with debug_info, not stripped
chenhaoxu@chenhaoxu-VirtualBox:/usr/lib/debug/boot$