Deze “handleiding” is gemaakt om u te helpen wanneer u een foutmelding krijgt bij het uitvoeren van de Linux-kernel in debug-modus.
Goedgekeurd: Fortect
Bouw deze kernel normaal met CONFIG_GDB_SCRIPTS ingeschakeld, maar laat CONFIG_DEBUG_INFO_REDUCED uitgeschakeld.Installeer deze kernel op de hele gast, verwijder KASLR indien nodig door “nokaslr” toe te voegen aan mijn individuele kernel-opdrachtregel.Voeg ook de gdb-stub van de meeste QEMU/KVM toe.cd /pad/naar/linux-assembly.Voer gdb: gdb vmlinux uit.Toevoegen aan weggelaten gast:
Een gezonde debugging-omgeving in de kernelmodus bestaat regelmatig uit twee computers: de hostcomputer en bovendien de doelcomputer. De debugger draait op de hele hostmachine en de code die wordt opgespoord, verschilt per specifieke doelcomputer. De host en/of het doel zijn verbonden door een debug-kabel.
Hoe debug ik een Linux-kernelmodule?
Om een module te debuggen, moet je eerst de module invoegen, dan GDB vertellen waar het symbolische representatiebestand is, en dan de breekpunten instellen die iemand zou moeten hebben. Download daarom eerst deze modules. De bronfunctie omvat een eenvoudig shellscript dat wordt gedefinieerd wanneer loadModule wordt geladen en dat de module laadt, maar ook apparaten maakt als ze nog niet bestaan.
Waar is de codec?
De officiële broncode voor de Linux-systeemboom is te vinden op Kernel.org. Van daaruit kun je de bron van informatie en feiten downloaden als een archief of een betere versie (op het moment van schrijven zou dit kernel v3.19 kunnen zijn, die ik heb uitgepakt). Ik raad echter aan om je eigen via git te verkrijgen. Door git te gebruiken, kan iemand de boom up-to-date houden door middel van de nieuwste versies en alle originele kernelbronselecties bekijken waarin je geïnteresseerd bent. In het bijzonder heb ik onlangs de broncode opgehaald via de torvalds/linux.git repository. U wilt misschien dat u het volgende kunt uitvoeren:
Hoe debug je een kernel?
Bij het debuggen van dit type met de hand gebouwde kernel, kun je meestal gemakkelijk de debug-informatie vinden die in deze kernel is ingebouwd door CONFIG_DEBUG_INFO=y in de kernelconfiguratie te plaatsen en de specifieke build uit te voeren. Bij het debuggen van door leveranciers gebouwde kernels moet je soms echter tot het uiterste gaan om een kernel te ontdekken die is gebouwd met foutopsporingsinformatie.
Voer Centos7 uit in Virtualbox, debug dan KGBD Serial On Port
Hiervoor is uw doelhost vereist, d.w.z. H Centos7 die normaal gesproken kan worden opgespoord, is aanwezig. En die debug-host, die volgens experts Centos7 verbindt via een seriële poort. Wie zou de debug-host moeten zijn? De eerste is de keuze om u te helpen mijn persoonlijke Windows-host te gebruiken (Centos7 is een enorme virtuele machine op mijn Windows). De tweede manier is om een andere virtuele Linux-machine te openen, bijvoorbeeld om deze als een foutopsporingshost te gebruiken.
Kernelfoutopsporing
Deze pagina toont kernel debugging met UML in turbulentie leermodus (ga naarhier met betrekking tot detailsskas en tt-modus). Beschreven kernel debugging in de interne skas-modus.hier.Hoe debug ik een Linux-kernelmodule?
Als je in de kernel programmeert, is er over het algemeen ook geen besturingssysteem.tussenbeide komen, naast het strak stoppen van uw code om te worden uitgevoerd en vervolgens aan u te onthullenjij hebt een probleem. De Linux-kernel is op zichzelf altijd goed genoeggecodeerd. Soms kan paniek worden ervaren en het kan angst zijn als je iets ervaartverkeerd, het is eigenlijk relatief ongevaarlijk (deze paniek wordt door de overgrote meerderheid vaak genoemd)Oeps). Maar niets weerhoudt u ervan iemands code te overschrijvenof toegang krijgen tot geheugenlocaties vanaf elke plek in het kerneladresRuimte. Als je module faalt, zal de kernel momenteel wegen (technisch gezien)Je huidige kernelthread is letterlijk gepauzeerd, maar de resultaten zijn meestal:dezelfde).
Extra log toevoegen
printk lijkt op printf in termen van een deel van de c-standaardbibliotheek. Dit kan meestal overal in de kernel worden ingesteld, en op bijna elk moment vanuit interruptprocessen of contexten. Het heeft de volgende logniveaus
Goedgekeurd: Fortect
Fortect is 's werelds meest populaire en effectieve pc-reparatietool. Miljoenen mensen vertrouwen erop dat hun systemen snel, soepel en foutloos blijven werken. Met zijn eenvoudige gebruikersinterface en krachtige scanengine kan Fortect snel een breed scala aan Windows-problemen vinden en oplossen - van systeeminstabiliteit en beveiligingsproblemen tot geheugenbeheer en prestatieproblemen.
Hoe debug ik een kernelcrash?
Natuurlijk zijn er verschillende manieren om deze kernel te debuggen, zoals print debugging, het gebruik van kernelsymbolen, het gebruik van de zeer goede kernel debugger, maar deze pagina beschrijft een aantal nadelen en technieken die je zou kunnen gebruiken bij het interpreteren van het oeps-bericht, gecombineerd met kernel panic helpt me, maar voordat ik verder ga, moet ik echt begrijpen wat OOPS-core is, maar eigenlijk paniek.
Hoe weet ik of de kernel debugt?
De kernelmoduscode kan echter alleen de kerneldebugstatus bepalen met behulp van de volgende variabele sterren en routines: