IceCoder
15-06-2010, 09:42
Ciao ragazzi, ho un problema di cui ancora non riesco a capacitarmi..
Sto usando (ormai da anni) qemu + gdb per apprendere di piu sui sistemi operativi.
Da due giorni è successa una cosa che a mio avviso (per quanto possa essere improbabile) ha dell'illogico: debuggando il mio mbr ho settato (come sempre) il breakpoint alla posizione 0x7c00, il risultato è che qemu ha continuato ad eseguire il codice come se nulla fosse, mentre gdb si è fermato al breakpoint, e steppando di un'istruzione è finito ad una posizione assurda (0x000000a0, ma non ho chiamato alcun interrupt quindi è strano, l'istruzione era una MOV quindi doveva trovarsi a 0x7c02).
Ho pensato che il problema fosse il codice ma avendolo persino riscritto da zero (provato persino con un codice del tipo "hello world") ottenevo lo stesso risultato, poi ho scaricato bochs per sostituire qemu ed ottengo un'altra stranezza: fisso il solito breakpoint ed il debugger riceve SIGTRAP al punto 0x000e0000, disassemblando vedo codice che non centra niente, il breakpoint non viene calcolato come hit, e se gli do un comando 'continue' mi manca il breakpoint....
Sono impazziti cosi dal nulla... avete qualche idea? sto sclerando..
Uso ubuntu 10.04 LTS
Kernel 2.6.32-22-generic
qemu 0.12.3 NO KVM
gdb 7.1
Sto usando (ormai da anni) qemu + gdb per apprendere di piu sui sistemi operativi.
Da due giorni è successa una cosa che a mio avviso (per quanto possa essere improbabile) ha dell'illogico: debuggando il mio mbr ho settato (come sempre) il breakpoint alla posizione 0x7c00, il risultato è che qemu ha continuato ad eseguire il codice come se nulla fosse, mentre gdb si è fermato al breakpoint, e steppando di un'istruzione è finito ad una posizione assurda (0x000000a0, ma non ho chiamato alcun interrupt quindi è strano, l'istruzione era una MOV quindi doveva trovarsi a 0x7c02).
Ho pensato che il problema fosse il codice ma avendolo persino riscritto da zero (provato persino con un codice del tipo "hello world") ottenevo lo stesso risultato, poi ho scaricato bochs per sostituire qemu ed ottengo un'altra stranezza: fisso il solito breakpoint ed il debugger riceve SIGTRAP al punto 0x000e0000, disassemblando vedo codice che non centra niente, il breakpoint non viene calcolato come hit, e se gli do un comando 'continue' mi manca il breakpoint....
Sono impazziti cosi dal nulla... avete qualche idea? sto sclerando..
Uso ubuntu 10.04 LTS
Kernel 2.6.32-22-generic
qemu 0.12.3 NO KVM
gdb 7.1