0175-GDB 調(diào)試 multiboot 啟動
2023-08-19 13:09 作者:jiangbo4444 | 我要投稿
環(huán)境
Time 2022-11-12
WSL-Ubuntu 22.04
QEMU 6.2.0
NASM 2.15.05
前言
說明
參考:https://os.phil-opp.com/multiboot-kernel/
目標
使用編寫好的內(nèi)核可執(zhí)行文件,直接從 QEMU 啟動,啟動時暫停 CPU,使用 GDB 調(diào)試。
匯編代碼
編譯 debug 版本
nasm -f elf32 -g boot.asm -g 參數(shù)可以增加調(diào)試信息。
鏈接
linker.ld 文件內(nèi)容:
鏈接命令: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 調(diào)試
啟動命令:gdb kernel.elf
設置架構:set architecture i386:x86-64
增加斷點:break start,在入口增加了一個斷點。
效果

通過 GDB 調(diào)試可以顯示源碼,單步調(diào)試時,自動顯示下一條指令。
通過 CR0 寄存器,可以看到 PE,即保護模式已啟用。
總結
從 QEMU 中啟動 心中了調(diào)試信息的 kernel.elf,并且通過 GDB 連接調(diào)試。
附錄
標簽: