调试引导程序与QEMU GDB(Debugging bootloader with gdb in q

2019-07-18 00:54发布

似乎是与FreeDOS的引导程序的问题。 (看来,启动代码找不到在某些情况下的内核。)

所以我想用gdb调试bootloader的QEMU。 以下几个wiki和在线免费提供课程材料中的说明,我跑QEMU这样

qemu-system-i386 -fda fdboot.img -boot a -s -S

然后连接这样GDB

$ gdb
(gdb) target remote localhost:1234

我可以单步的前10 - 12指令si我假设是SeaBIOS。

但过去,当我尝试步入Bootloader代码,它继续执行而不破,一路攀升到FreeDOS的菜单提示。 这完全跳过Bootloader代码,我想,因为它被执行以检查一步一步来。

我需要做什么做的,这样我可以一步虽然引导程序?

[您可以从项目的网站,如果你想尝试自己下载FreeDOS的软盘镜像。]

Answer 1:

做工精细这里使用QEMU 1.3和gdb 7.3.50.20111117(你没有说你使用什么版本)。 我能单步万吨的指示,直到我觉得无聊,并放置一个断点赶引导程序:

(gdb) br *0x7c00
Breakpoint 1 at 0x7c00
(gdb) c
Continuing.

Breakpoint 1, 0x00007c00 in ?? ()
(gdb) x/i $eip
=> 0x7c00:      jmp    0x7c3e

请注意,我已经使用第一次设置GDB以16位模式set architecture i8086



文章来源: Debugging bootloader with gdb in qemu