Подтвердить что ты не робот

Отладка загрузчика с gdb в qemu

Кажется, что проблема связана с загрузчиком Freedos. (Похоже, что в некоторых случаях загрузочный код не может найти ядро.)

Итак, я пытаюсь отладить загрузчик в qemu с помощью gdb. Следуя инструкциям, найденным на нескольких вики и свободно доступных онлайн-материалах курса, я запускаю qemu, как это

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

И затем подключите gdb, как этот

$ gdb
(gdb) target remote localhost:1234

Я могу выполнить первые 10 - 12 инструкций с si, который, как я полагаю, является SeaBIOS.

Но в прошлом, когда я пытаюсь войти в код загрузчика, он продолжает выполнение без нарушения, вплоть до приглашения меню FreeDos. Это полностью пропускает код загрузчика, который я хотел бы поэтапно изучить по мере его выполнения.

Что мне нужно сделать, чтобы я мог выполнить шаг за загрузчиком?

[Вы можете загружать изображения флоппи-свободы с веб-сайта проекта, если вы хотите попробовать себя.]

4b9b3361

Ответ 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.