基于KGDB的ARM目标系统与内核调试指南
在软件开发与调试过程中,对内核和内核模块进行调试是一项至关重要的工作。KGDB(Kernel GDB)作为一种强大的内核调试工具,能帮助开发者深入了解内核运行状态,定位并解决问题。本文将详细介绍如何设置基于KGDB的ARM目标系统和内核,以及如何使用KGDB进行内核和内核模块的调试。
1. 测试目标系统
为了测试目标系统,我们将使用通过SEALS项目生成的ARM32虚拟Linux平台,借助QEMU模拟器(qemu-system-arm)来运行。SEALS项目脚本会生成运行和测试嵌入式Linux系统所需的所有组件,这些组件位于SEALS VExpress板的暂存区域(用户在板配置文件中设置的文件夹)。以下是所需组件的详细信息:
- 内核镜像 :使用5.10.109内核,包含用于启动的压缩zImage文件(路径: /linux-5.10.109/arch/arm/boot/zImage)和带有内核及调试符号的未压缩vmlinux镜像(路径: /linux-5.10.109/vmlinux),后者用于内核调试。
- DTB镜像 :即设备树二进制文件,是现代ARM、ARM64和PPC板正确启动所必需的。这里使用的文件是 /linux-5.10.109/arch/arm/boot/dts/vexpress-v2p-ca9.dtb。
- 根文件系统镜像 :一个非常小的(骨架)根文件系统镜像(路径: /images/rfs.img),为方便起见,压缩内核镜像和DTB也存放在同一images文件夹中。
-