Отладка загрузчика с gdb в qemu
кажется, есть проблема с загрузчиком Freedos. (Похоже, что загрузочный код не может найти ядро в определенных обстоятельствах.)
поэтому я пытаюсь отладить загрузчик в qemu с помощью gdb. Следуя инструкциям, найденным на нескольких wiki и свободно доступных онлайн-материалах курса, я запускаю qemu следующим образом
qemu-system-i386 -fda fdboot.img -boot a -s -S
а затем подключите gdb вот так
$ gdb
(gdb) target remote localhost:1234
Я могу пройти через первые 10 - 12 Инструкции si
что я предполагаю SeaBIOS.
но после этого, когда я пытаюсь войти в код загрузчика, он продолжает выполнение без разрыва, вплоть до подсказки меню FreeDos. Это полностью пропускает код загрузчика, который я хотел бы изучить шаг за шагом по мере его выполнения.
что мне нужно сделать, чтобы я мог шагнуть через загрузчик?
[вы можете скачать freedos дискеты изображения с веб-сайта проекта, если вы хотите попробовать себя.]
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
.