QEMU 调试 Linux 内核:入门指南
QEMU 是一款功能强大的模拟器,可以模拟多种硬件平台,包括 x86, ARM, MIPS 等,同时还支持调试内核。本文介绍如何使用 QEMU 调试 Linux 内核。
- 确认环境
首先,要确认本地环境中已经安装了 QEMU 和 gdb。如果没有安装,请使用以下命令安装:
sudo apt-get install qemu gdb
- 下载内核代码
从官网或者 Github 上下载最新的 Linux 内核代码:
git clone https://github.com/torvalds/linux.git
- 编译内核
进入内核代码目录,使用以下命令编译内核:
make defconfig
make -j4
其中,-j4 表示使用 4 个线程编译,可以根据机器的 CPU 核数自行调整。
- 启动 QEMU
使用以下命令启动 QEMU:
qemu-system-x86_64 -kernel arch/x86/boot/bzImage -s -S
其中,
-kernel指定内核镜像文件-s启动 GDB 并监听 1234 端口-S启动 QEMU 后暂停,等待 GDB 连接
- 连接 GDB
打开一个新的控制台窗口,使用以下命令连接 GDB:
gdb vmlinux
其中,vmlinux 是编译出来的内核 ELF 文件。
在 GDB 中,使用以下命令连接到 QEMU:
target remote localhost:1234
- 调试内核
现在,可以在 GDB 中使用所有的调试命令了,比如:
b: 设置断点c: 继续执行si: 单步执行info registers: 查看寄存器值x: 查看内存内容
等等。
当需要退出调试时,可以在 GDB 中使用以下命令:
q
或者直接关闭 GDB 窗口。
参考文献:
- https://wiki.osdev.org/QEMU#Debugging_with_GDB
- https://www.kernel.org/doc/html/latest/dev-tools/gdb-kernel-debugging.html
原文地址: https://www.cveoy.top/t/topic/lM3i 著作权归作者所有。请勿转载和采集!