rhl*_*lee 12 debugging assembly gdb qemu bootloader
Freedos引导程序似乎存在问题.(在某些情况下,似乎bootcode无法找到内核.)
所以我试图用gdb调试qemu中的bootloader.按照几个维基上的说明和免费提供的在线课程资料,我像这样运行qemu
qemu-system-i386 -fda fdboot.img -boot a -s -S
Run Code Online (Sandbox Code Playgroud)
然后像这样连接gdb
$ gdb
(gdb) target remote localhost:1234
Run Code Online (Sandbox Code Playgroud)
我可以逐步完成前面的10 - 12条指令si
,我假设它是SeaBIOS.
但过去,当我尝试进入引导加载程序代码时,它会继续执行而不会中断,一直到FreeDos菜单提示符.这完全跳过了我想在执行时逐步检查的引导加载程序代码.
我需要做什么才能通过引导加载程序?
[如果您想尝试自己,可以从项目网站下载freedos软盘映像.]
Jes*_*ter 11
使用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
Run Code Online (Sandbox Code Playgroud)
请注意,我首先使用gdb设置为16位模式set architecture i8086
.
归档时间: |
|
查看次数: |
7603 次 |
最近记录: |