2013-01-09 12 views
12

Wygląda na to, że wystąpił problem z programem ładującym Freedos. (Wygląda na to, że kod bootcode nie może znaleźć jądra w pewnych okolicznościach.)Debugowanie bootloadera z gdb w qemu

Próbuję więc debugować bootloader w qemu z gdb. Postępując zgodnie z instrukcjami podanymi na kilku wiki i łatwo dostępnych materiałów, kurs online, biegnę qemu jak ten

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

a następnie podłączyć gdb jak ten

$ gdb 
(gdb) target remote localhost:1234 

mogę przejść przez pierwsze 10 - 12 instrukcji z si który zakładam jest SeaBIOS.

Ale po tym, kiedy próbuję wkroczyć do kodu bootloadera, kontynuuje on wykonywanie bez łamania, aż do polecenia menu FreeDos. To całkowicie pomija kod bootloadera, który chciałbym zbadać krok po kroku podczas jego wykonywania.

Co muszę zrobić, aby móc wykonać krok bootloadera?

[Można pobrać FreeDOS obrazów dyskietek ze strony internetowej projektu, jeśli chcesz spróbować samemu.]

+0

Alternatywna sugestia: BOCHS ma wbudowany debugger, który pozwoli ci jednoetapowy sektor rozruchowy. –

Odpowiedz

10

działa dobrze tutaj używając qemu 1.3 i gdb 7.3.50.20111117 (nie powiedziałeś co wersje użyłeś) . udało mi się pojedyncze tony kroku z instrukcjami aż znudziło i umieścić pułapkę złapać bootloader:

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

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

Zauważ, że mam ustawiony gdb do 16 bitowy tryb pierwszym użyciem set architecture i8086.

+0

Używam gdb 7.5-ubuntu i qemu 1.2.0 (qemu-kvm-1.2.0 + noroms-0ubuntu2, Debian). Tak próbowałem breakpointing na * 0x7c00, ale wydaje się, że mija ten adres, nigdy się nie łamie, dociera do interaktywnego menu Freedos. Próbowałem także ustawić achitecture na i8086, bez żadnej różnicy. Spróbuję skompilować qemu i gdb z pnia/głowy, aby sprawdzić, czy to robi jakąkolwiek różnicę. – rhlee

+0

Tak, kompiluję qemu z HEAD i mogę z powodzeniem przejść przez wszystkie instrukcje teraz. – rhlee

+0

Co masz na myśli skompilować qemu z HEAD? Nigdy wcześniej o tym nie słyszałem. Mam ten sam problem, ale nie wiem, co oznacza kompilacja HEAD. Możesz rozwinąć temat? :) – Rob

Powiązane problemy