0175-GDB 调试 multiboot 启动
2023-08-19 13:09 作者:jiangbo4444 | 我要投稿
环境
Time 2022-11-12
WSL-Ubuntu 22.04
QEMU 6.2.0
NASM 2.15.05
前言
说明
参考:https://os.phil-opp.com/multiboot-kernel/
目标
使用编写好的内核可执行文件,直接从 QEMU 启动,启动时暂停 CPU,使用 GDB 调试。
汇编代码
编译 debug 版本
nasm -f elf32 -g boot.asm -g 参数可以增加调试信息。
链接
linker.ld 文件内容:
链接命令:ld -T linker.ld -m elf_i386 boot.o -o kernel.elf
启动 QEMU
qemu-system-x86_64 -kernel kernel.elf -display curses -s -S
启动 GDB 调试
启动命令:gdb kernel.elf
设置架构:set architecture i386:x86-64
增加断点:break start,在入口增加了一个断点。
效果

通过 GDB 调试可以显示源码,单步调试时,自动显示下一条指令。
通过 CR0 寄存器,可以看到 PE,即保护模式已启用。
总结
从 QEMU 中启动 心中了调试信息的 kernel.elf,并且通过 GDB 连接调试。