如何从源码构建内核调试符号(Ubuntu 20.04、v5.15.0内核)
从源码构建内核调试符号(-dbg包)用于Kdump和Crash调试
针对你从源码编译的v5.15.0内核,以下是构建对应调试符号的步骤,适配Ubuntu 20.04环境:
1. 确认内核编译配置
进入你的v5.15.0内核源码目录,确保开启调试相关配置:
- 执行
make menuconfig,勾选以下选项:CONFIG_DEBUG_INFO=y(生成完整调试信息)CONFIG_DEBUG_INFO_BTF=y(可选,为Crash提供BTF类型信息支持)CONFIG_KEXEC_CORE=y和CONFIG_CRASH_DUMP=y(Kdump功能必需)
- 若已编译过内核,可直接修改
.config文件添加上述配置,再执行make olddefconfig自动补全依赖配置
2. 编译内核并生成调试符号
- 编译内核(利用多核加速,
nproc获取CPU核心数):make -j$(nproc) - 生成Ubuntu标准的deb格式调试符号包,执行:
执行完成后,源码目录的上级目录会生成多个deb包,其中命名类似make deb-pkg DEBUG_INFO=ylinux-image-5.15.0-xxx-dbg_xxx_amd64.deb的就是调试符号包(xxx为你的内核自定义后缀) - 若无需deb包,编译完成后,源码目录下的
vmlinux文件本身已包含完整调试信息,可直接用于Crash调试
3. 安装调试符号
- 安装生成的deb调试包:
sudo dpkg -i ../linux-image-5.15.0-xxx-dbg_xxx_amd64.deb - 安装完成后,调试符号会被放置在
/usr/lib/debug/boot/vmlinux-5.15.0-xxx路径下,Crash工具可自动识别该路径
4. 配合Kdump和Crash使用
- 确保Kdump服务正常运行:
sudo systemctl enable --now kdump-tools - 系统崩溃生成vmcore文件后,使用Crash调试的命令示例:
crash /usr/lib/debug/boot/vmlinux-5.15.0-xxx /var/crash/[时间戳]/vmcore - 若直接使用源码目录下的
vmlinux文件,命令为:crash ./vmlinux /var/crash/[时间戳]/vmcore
内容的提问来源于stack exchange,提问作者plznobug
相关产品推荐
相关产品推荐

