Autor Thema: Bochs und der Debugger  (Gelesen 2149 mal)

ChristianF

  • Beiträge: 296
    • Profil anzeigen
    • DeutschOS - Betriebssystem Projekt
Gespeichert
« am: 21. August 2009, 09:33 »
Hallo Leute,
ich bin ja momentan dabei, den Code fürs Paging zu überarbeiten. Nun wird nicht merh von 0 bis zum ende des Kernels gemappt, sondern nur der Kernel, VGA Part, usw.
Nun nutze ich den Debugger von Bochs, um zu schauen, wie das ganze gemappt wurde, wo folgende Ausgabe hervorgegangen ist:
0x000b8000-0x000b8fff -> 0x000b8000-0x000b8fff
0x00100000-0x0010ffff -> 0x00100000-0x0010ffff
0x00112000-0x0011bfff -> 0x00112000-0x0011bfff
0xa0000000-0xa0000fff -> 0x00002000-0x00002fff
0xa0001000-0xa009bfff -> 0x00004000-0x0009efff
0xa009c000-0xa00b2fff -> 0x000a1000-0x000b7fff
0xa00b3000-0xa00e1fff -> 0x000b9000-0x000e7fff
0xa00e2000-0xa00e3fff -> 0x00110000-0x00111fff
0xa00e4000-0xa0100fff -> 0x0011c000-0x00138fff
Ich vermute ja mal, dass die verkorkste Ausgabe deswegen ist, da die physikalischen Speicherseiten nicht aneinanderliegen (die des Heaps, also ab 0xa0000000)... Sollte behoben sein, wenn ich die Speicherseiten nehme, die hinter dem Kernel liegen
 
Meine Frage ist nun folgende:
Gibt es die Möglichkeit, den Bochs Debugger so zu nutzen wie den "Debugger" von qemu? Dort habe ich die Möflichkeit, zu egal welcher Laufzeit mir die mappings oder die Register anzeigen zu lassen. Kann man dies irgendwie über die Konfigurationsdatei, die Bochs benötigt einstellen? Es ist nämlich mühselig, immer ein PANIC einzubauen und das dann per lb als Haltepunkt anzugeben.
« Letzte Änderung: 21. August 2009, 10:12 von ChristianF »

SHyx0rmZ

  • Beiträge: 67
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 21. August 2009, 15:58 »
[CTRL] + [C] ist, was du willst. (Zumindest hoffe ich das.)
@X="krJhbuaesrytre c a cnR.ohut";while@X[/(..)(.)/];@X=@X[3..-1]+$1;print$2;end
"Scheiß auf Perl, wir haben Kekse" - Emperor Ruby

tarrox

  • Beiträge: 12
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 21. August 2009, 20:10 »
Zudem kannst du in der neusten Version den lustigen Gui-Debugger verwenden der dir alles zeigt, das Ding ist echt zu empfehlen^^.

Ansonsten kannst du wie SHyx0rmZ schon angedeutet hat, jederzeit den Ablauf unterbrechen und schauen was los ist. Dazu kannst du auch Breakpoints setzen, die den Programmablauf abbrechen, wenn das Programm an den Breakpoint angekommen ist. Dazu kannst du mit "s" noch Bochs beauftragen nur einen Schritt zu machen.

 

Einloggen