QEMU 调试ARM Linux内核
1. 配置交叉编译环境
2. 配置内核
make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm vexpress_defconfig
make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm menuconfig
确保编译的内核包含调试信息:

3. 编译内核
make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm
4. 启动内核
qemu-system-arm -M vexpress-a9 -smp 4 -m 1024M -kernel \
arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" \
-dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -S -s
-S: 表示QEMU虚拟机会冻结CPU,直到远程的GDB输入相应控制命令。
-s:表示在1234端口接受GDB的调试链接。
启动调试终端
在另一个超级终端中启动ARM GDB。
cd linux-4.*
arm-linux-gnueabi-gdb --tui vmlinux
(gdb) target remote localhost:1234
(gdb) b start_kernel
(gdb) c
GDB开始接管ARM-Linux 内核运行,并且到断点中暂停,这时可使用GDB命令来调试内核。