Debug debug, mag tengelyek ablakok
Debug debug, Windows operációs rendszer kernel

Tételezzük fel, azt akartuk, hogy belenézel a Windows kernel, hogyan működik. Vagy tegyük fel, írtuk meg eszközmeghajtó, és ez nem működik, vagy nem működik megfelelően. Meg kell vizsgálnunk, hogy a kernel hibakereső, ami történik.
Először is, meg kell készítenie egy „közepes” hibakeresés céljából.
2. Szükséged lesz egy Windows rendszert futtató számítógépen: az első számítógép - az egyik, hogy lesz kitéve a hibakeresés, a második számítógép - az egyetlen, amellyel kerül sor hibakeresés. Microsoft hivatkozik az első számítógép az úgynevezett Cél. és a második - a fogadó.
Ez a két számítógépet csatlakoztatni kell egymással, hogy továbbítja a hibakeresési információkat. Számos módja van:
Itt van a munkahelyen hibakeresés:

Bal - cél. Megvizsgálta a számítógépet.
Jobb - Host. debugger laptop.
A laptop csatlakozik az USB-kábelt és a programozó MBFTDI. Ebben az esetben fogjuk használni egyszerűen USB2COM adapter. Azaz, egy laptop, mint egy soros port. Van azonban árnyalatot - kimeneti szintjét a programozási MBFTDI nem felel meg a szabványos soros port. Ezért én csatlakozik a szint átalakító, on-chip MAX232 (talált körében régi darab vas, van, hogy van egy doboz az irodában).
Most be kell állítania a cél. Itt van 64 bites Windows 7.
Kezdés az ablak CMD parancssort rendszergazdaként, és végrehajtja a parancsot:
> Bcdedit / debug on
> Bcdedit / dbgsettings soros debugport: n baud: ráta
Azt debugport: COM1 és sebesség: 115200
Ez általában a teljes konfiguráció az ellenőrzött számítógép.
Most csak újra kell indítani.
Az én laptop, mint a Windows 7 x64. Telepítettem a WDK és van egy részem joga debugger.
Futok WindDbg. Válassza ki a menüpontot a File -> Kernel Debug és egy ablak jelenik meg:

Opt egy átviteli sebessége 115200 és a soros port. Elvileg minden készen áll.
Host egy laptop a programban van WinDbg Shell, dostapnaya a Nézet menü -> Command. Van egy parancssor debugger.
Bármilyen magas technológiai a megfigyelőnek a kis megkülönböztethetők a varázslat ..
A fogadó a WinDbg programot, nyomja meg a Ctrl + szünet és a Target számítógép leáll! Ez teljesen megéri az összes folyamat és a Windows szálak. Akkor teát inni.
A hibakereső konzol, akkor végezze el a különböző parancsokat. Parancsok egy csomó, hogy van egy csomó lehetőség, persze nem tudom leírni őket. A végén, ez elég normális-segítse a program WinDbg.
Legegyszerűbb parancsokat:
> r
> T - egy processzor utasítások végrehajtására.
> P - végre processzor utasításokat, vagy az egész eljárást, ha az utasítás hívást.
Sőt, a kurzus hibakereső akkor töréspont a különböző típusokat.
A legegyszerűbb példa:
Mégis lehet beállítani egy töréspont a rögzítési vagy olvasási előre memóriahelyek bemeneti vagy kimeneti port.
Hogy megszünteti az összes töréspont - a csapat «bc *»
Ott is meg kell mondani a szimbolikus információ.
Persze, úgy a csupasz öröm assembler kód nem túl kellemes. Be kell kapcsolódni több hibakeresési információkat.
Például írtunk a vezető a Windows. Összeállította hibakeresés változata. Együtt a fájl vezető mydrv.sys fordító generál egy állókép megfelelő karaktert információk mydrv.pdb.
Feje fölött a hibakereső Fájl menü -> Symbol File Path. és a párbeszédablakban hozzá az utat, hogy a PDB fájlt.
> Bp mydrv DriverEntry - megállítani a kernel, hogy mikor lesz a függvényhívás DriverEntry mi mydrv driver.
Ezen túlmenően, ez nagyon hasznos lehet csatlakozni a debugger is szimbolikus információ a Windows kernel. Természetesen sok változat windose, vannak különböző építmények, és hol található a szimbólum adatok megfelelnek a Cél Operációs rendszer Windows?
A legegyszerűbb módja, hogy teljesíti a parancsot debugger
Ebben az esetben a kívánt hibakereső fájlokat (ez a helyes verzió) lehet szivattyúzni az interneten keresztül a lemezt a mappa C: \ localsymbols közvetlenül a Microsoft szerver.
Most már van egy értelmes módon a hibakeresés a kernel maga.
Szeretné látni, hogyan néz ki, például a funkció-illesztőprogram USBPORTSVC_CompleteIsoTransfer Usbport.sys fájlban. Nem probléma:

Beállíthatjuk a töréspontot, majd lépésről lépésre, hogy végre minden. A szimbólum az információ segít megérteni, ha nem a részleteket, legalábbis az általános jelentése a futtatható kódot egy másik vezető.
Például sok rendszer adatstruktúrák a Windows kernel szállítjuk „aláírás” - egy speciális sor, általában 4 karakter. Így az alapvető funkciók a képessége, hogy könnyen ellenőrizheti a nekik küldött mutató struktúrák igaz vagy nem. Itt van a kód a fent hívás Kartik USBPORT_AssertSig funkciót. Még a nevét funkció világossá válik, hogy mit is csinál - ellenőrizze az index, hogy valóban arra utal, hogy a szerkezet a kívánt aláírást.
Még egy dolog. Amikor hívja a Windows kernel funkciók általában az első négy paraméter funkciók átkerülnek a nyilvántartások RCX. RDX. R8 és R9. Úgy néz ki, mint a többi paramétert, ha négynél több, át funkciók a verem.
Általában WinDbg debugger bőséges lehetőséget, hogy debug a vezetők, valamint a lehetőséget, hogy vizsgálja meg az összes Windows kernel.