YeXo - een kernel programmeren

31 maart 2006

Een kernel debuggen met bochs

Een kernel debuggen is erg lastig. Op een 'echte' computer is het zo goed als onmogelijk omdat als er iest fout gaat in je kernel (een kernel panic), er niets meer is dat betrouwbaar werkt. De enige manier om dit op te lossen is bochs gebruiken met de ingebouwde debugger. Zie hiervoor ook de debugging handleiding van bochs (engels). Hierna zal ik kort samenvatten hoe je de interne debugger van bochs kunt gebruiken om fouten in je kernel te traceren.

Om te beginnen start je niet bochs.exe maar bochsdbg.exe. Je virtuele computer begint nu niet met opstarten maar geeft in plaats daarvan een commandline prompt. Je hebt hier een aantal opdrachten tot je beschikking. De belangrijkste zijn de volgende, voor een uitgebreide lijst zie de debugging handleiding van bochs.

c(ontinue)
Ga verder met uitvoeren
s(tep) i
Voer i stappen uit, standaardwaarde voor i is 1.
Ctrl-C
Stop met uitvoeren en geef opnieuw een commandline prompt. Ctrl-C is handig als je je kernel tijdens een bepaalde actie wilt stoppen om daarna stap voor stap verder te gaan.
q(uit)
Stop met uitvoeren en sluit debugger af
vbreak segment:offset
Stel een breakpoint in op het virtuele adres segment:offset.
info break
Geef informatie over alle breakpoints.
info regs
Print een lijst van alle CPU registers en hun inhoud.

3 Reacties:

  • Beste YeXo,
    Bedankt voor deze post. Ik ben zelf ook bezig met een kernel te schrijven, dus waarschijnlijk lees ik de rest van je posts ook nog wel.

    Weet je of het mogelijk is om bochs via scripts aan te sturen?

    PS. Je hebt het in de post over "debugging handleiding van grub" waarschijnlijk bedoel je "bochs".


    Kasper

    Door Anonymous Anoniem, op 07 februari, 2008 15:51  

  • Hoi Kasper,

    Ik bedoelde inderdaad bochs ipv grub. Ik heb het nu aangepast. Bedankt.

    Wat zou je precies aan willen sturen via scripts? Het is prima mogelijk om bochs op te starten via een script (ik geloof bochs -q) waarbij -q ervoor zorgt dat je geen vragen krijgt over de installingen. Het debuggen als je kernel eenmaal opgestart is zul je hoe dan ook handmatig moeten doen. Ik snap dus niet precies wat je bedoelt.

    Veel succes met je eigen kernel!

    Door Blogger Yexo, op 08 februari, 2008 09:39  

  • Beste YeXo,

    Via de scripts wilde ik input naar m'n kernel sturen en output van de kernel verwerken. En op die manier dingen als regressie- en unit tests uitvoeren.

    Maar je hebt gelijk; er is eigenlijk maar een klein stukje dat alleen via de buiten kant is te testen, de rest is met speciale test drivers wel te testen.

    Groeten,
    Kasper

    Door Anonymous Anoniem, op 16 februari, 2008 16:08  

Een reactie posten

<< Home