Debug debug, mag tengelyek ablakok

Debug debug, Windows operációs rendszer kernel

Debug debug, mag tengelyek ablakok

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:

Debug debug, mag tengelyek ablakok

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:

Debug debug, mag tengelyek ablakok

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 - mutatja a tartalmát a CPU regiszterek.

> 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:

Debug debug, mag tengelyek ablakok

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.