Az okok azonosításához kék képernyők(BSOD) elemeznie kell a memóriakiíratást. Az esetek túlnyomó részében elég egy minidump, amit kritikus hibák esetén hoz létre a rendszer.
Ez a cikk tartalmazza lépésről lépésre szóló utasítás a WinDBG telepítéséhez és konfigurálásához - egy hatékony hibakereső eszköz, amely lehetővé teszi a BSOD valódi okának azonosítását.

1. lépés – Kis Memory Dump Recording beállítása

2. lépés – A WinDBG telepítése

A memóriakiíratok elemzéséhez telepítenie kell a WinDBG hibakeresőt, amely a Windows SDK része. A cikk írásakor a legújabb elérhető Windows verziók SDK:

  • Windows 10 SDK (online telepítő letöltése)
  • Windows 8.1 SDK (online telepítő letöltése)

3. lépés – .dmp fájlok hozzárendelése a WinDBG-hez

Leképezheti .dmp fájljait WinDBG-re, hogy könnyebben olvasható legyen és elemezze a memóriakiíratásokat. Ez lehetővé teszi, hogy az Intézőből közvetlenül a WinDBG-ben nyissa meg a dump fájlokat, megkerülve az előzetes indítást.


4. lépés – A Symbol Server beállítása hibakeresési szimbólumfájlok fogadására


A WinDBG telepítése és kezdeti konfigurálása ezzel befejeződött. A megjelenés megváltoztatásához lépjen a menübe Kilátás- A betűtípus beállításokat az elem kiválasztásával találja meg Betűtípusés a konzolablak beállításait Lehetőségek.

2010. június 22

Korábban a Windbg külön letölthető volt. A legújabb verziók esetében azonban a Microsoft a Windows SDK részeként tartja meg. A letöltési linkeket alább találja.

Windows 10

A Windbg for Windows 7 legújabb verziója letölthető a https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk linkről

Windows 7

Töltse le a telepítőket a fenti hivatkozásokról. Vegye figyelembe, hogy ez nem tölti le a teljes SDK-t, ez csak egy telepítő. miután futtatta a fájlt, tudsz válassza ki, mely eszközöket szeretné letölteni. Ha csak a Windbg érdekli, akkor minden mást kizárhat, és csak a "Hibakeresési eszközök" lehetőséget válassza a "Közös segédprogramok" alatt.

A fenti csomag a windbg 6.12-es verzióját telepíti. Ha gyorsan szeretné telepíteni a windbg-t, keresse a régebbi verziót (6.11), amely letölthető innen
a bejegyzés végén található link.

Miután elvégezte a telepítést, megtalálhatja a programot Start menü-> Minden program -> Hibakereső eszközök Windowshoz -> Windbg

Hibakereső eszközök Windowshoz- Működési kód hibakereső eszközök Windows rendszerek. Ezek a Microsoft szabadon terjesztett programjai, amelyek felhasználói módú és kernelmódú kódok hibakeresésére szolgálnak: alkalmazások, illesztőprogramok, szolgáltatások, kernelmodulok. Az eszközkészlet tartalmaz konzol- és grafikus felhasználói felület-hibakeresőket, szimbólumokkal való munkavégzésre szolgáló segédprogramokat, fájlokat, folyamatokat, valamint távoli hibakereső segédprogramokat. Az eszközkészlet olyan segédprogramokat tartalmaz, amelyek segítségével megtalálhatja a rendszer különböző összetevőiben fellépő hibák okait. Hibakereső eszközök Windowshoz egy bizonyos pillanattól kezdve nem tölthetők le önálló disztribúció formájában, és a Windows SDK (Windows Software Development Kit) részét képezik. Hangszeres készlet Windows Eszközök Az SDK pedig elérhető az MSDN előfizetési program részeként, vagy külön disztribúcióként ingyenesen letölthető az msdn.microsoft.com webhelyről. A fejlesztők szerint a legújabb és legjobb jelenlegi verzió A Hibakereső eszközök Windowshoz a Windows SDK-ban találhatók.

A Windows rendszerhez készült hibakereső eszközöket gyakran frissítik és teszik elérhetővé a nyilvánosság számára, és ez a folyamat semmilyen módon nem függ a kiadástól. operációs rendszer. Ezért rendszeresen ellenőrizze az új verziókat.

Lássuk, mire valók a hibakereső eszközök Microsoft Windows:

  • Helyi alkalmazások, szolgáltatások (szolgáltatások), illesztőprogramok és kernel hibakeresése;
  • Hibakeresés hálózaton keresztül távoli alkalmazások, szolgáltatások (szolgáltatások), illesztőprogramok és kernel;
  • A futó alkalmazások valós időben történő hibakeresése;
  • Az alkalmazások, a kernel és a rendszer egészének memóriakiíratási fájljainak elemzése;
  • Dolgozzon x86/x64/Itanium architektúrán alapuló rendszerekkel;
  • Felhasználói módú és kernel módú programok hibakeresése;

Elérhető következő verziók Hibakereső eszközök Windowshoz: 32 bites x86, Intel Itanium, 64 bites x64. Kettőre van szükségünk: x86 vagy x64.

A Windows rendszerhez készült hibakereső eszközök telepítésének számos módja van, ebben a cikkben csak a főbbeket vesszük figyelembe:

  • Telepítés webes telepítőn keresztül.
  • Hibakereső eszközök telepítése Windowshoz az ISO-ból Windows kép SDK.
  • A Windows rendszerhez készült hibakereső eszközök telepítése közvetlenül a dbg_amd64.msi /dbg_x86.msi csomagokból.

Továbbra sem világos, hogy mikor, miért telepítsek hibakereső eszközöket a számítógépre? Végül is gyakran szembesülsz olyan helyzettel, amikor beavatkoznak munkakörnyezet nagyon nem kívánatos! És még inkább, mivel egy új termék telepítése, azaz a rendszerleíró adatbázis / rendszerfájlok módosítása teljesen elfogadhatatlan lehet. Példa erre a küldetéskritikus szerverek. Miért nem veszik figyelembe a fejlesztők az alkalmazások hordozható verzióit, amelyek nem igényelnek telepítést?
Verzióról verzióra a Debugging Tools for Windows csomag telepítési folyamata néhány változáson megy keresztül. Most ugorjunk közvetlenül a telepítési folyamatba, és nézzük meg, hogyan telepíthető az eszköztár.

Hibakereső eszközök telepítése Windows rendszerhez a webes telepítő segítségével

Nyissa meg a Windows SDK archívum oldalát, és keresse meg a Windows 10 nevű részt, és a „Windows 10 SDK (10586) és Microsoft Windows 10 Mobile Device Emulator (verzió 10586.11)” elem alatt.

Kattintson egy elemre SDK TELEPÍTÉSE. A kattintás után töltse le és futtassa az sdksetup.exe fájlt, amely elindítja a Windows SDK online telepítésének folyamatát. A kezdeti szakaszban a telepítő ellenőrzi, hogy a .NET-keretrendszer csomag telepítve van-e a rendszeren legújabb verzió(ban ben Ebben a pillanatban ez 4,5). Ha a csomag hiányzik, a rendszer felajánlja a telepítést, és az állomás újraindul, ha befejezte. Közvetlenül az újraindítás után, a felhasználói engedélyezés szakaszában, a telepítési folyamat közvetlenül a Windows SDK-val kezdődik.

Gyakran előfordulhat, hogy kivétel nélkül a csomag összes összetevőjének kiválasztásakor hibák fordulhatnak elő a telepítési folyamat során. Ebben az esetben ajánlatos az alkatrészeket szelektíven telepíteni, a minimálisan szükséges készletet.

A Windows Debugging Tools telepítése után a hibakereső fájlok helye, amikor ez a módszer telepítésünk a következő lesz:

  • 64 bites verziók: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x64
  • 32 bites verziók: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x86

* ahol az x.x a fejlesztőkészlet egy adott verziója;
Észrevettük, hogy a 8-as és újabb verziók telepítési útvonalai mindenkinél érezhetően eltérnek a klasszikustól előző verziók hibakereső eszközök?

Hatalmas plusz ez a módszer A Debigging Tools for Windows telepítése azt jelenti, hogy egyszerre telepíti a hibakereső eszközök verzióit az összes architektúrára.

Hibakereső eszközök telepítése Windowshoz a Windows SDK ISO-ból

Ez a módszer magában foglalja a Hibakereső eszközök Windowshoz telepítését a teljes Windows SDK (Software Developers Kit) telepítőkészlet használatával. Egy bizonyos ideig töltse le iso kép a megfelelő rendszerhez látogassa meg a Windows SDK archívum oldalát. Jelenleg azonban az SDK ISO-képet kaphat, ha futtatja az sdksetup.exe webes telepítőt, és kiválasztja az elemet Töltse le a Windows szoftverfejlesztő készletet a telepítő indító ablakában:

Mint kiderült, a webes telepítőt használó korábbi telepítési módszer meglehetősen szeszélyes és gyakran meghiúsul. Tiszta rendszereken problémamentesen települ, de kellően terhelt rendszereken számos probléma merül fel. Ha ez a helyzet, akkor használja ezt a módszert.

Ennek megfelelően az oldalon ki kell választani a kívánt disztribúciós készletet, nekem (és gondolom sokaknak) jelenleg ez a "Windows SDK for Windows 7 and .NET Framework 4" és egy kicsit lent kattintson a "Get" linkre. DVD ISO kép" .

Ha az msdn.microsoft.com webhelyen dolgozik, azt javaslom, hogy használjon böngészőt internet böngésző, mert előfordultak olyan esetek, amikor a versengő termékek nem működnek!

Ennek megfelelően csak szükség szerint kell választani. A Windows Debugging Tools bitessége általában megegyezik a rendszer bitségével. A tesztrendszereim többnyire 64 bitesek, ezért a legtöbb esetben a GRMSDKX_EN_DVD.iso 64 bites rendszerhez töltöm le a képet.
Ezután a kép letöltése után valahogyan dolgoznunk kell a meglévő ISO képpel. A hagyományos módszer természetesen a CD írása, de ez meglehetősen hosszú és néha költséges módszer. Használatát javaslom ingyenes közművek virtuális lemezeszközök létrehozásához a rendszerben. Személy szerint én inkább a DEAMON Tools Lite programot használom erre a célra. Valakinek más preferenciái lehetnek, közvetlenebb vagy könnyedebb közművek, ízben és színben, ahogy mondják .. Telepítés után Démon eszközök Lite, csak duplán kattintok a GRMSDKX_EN_DVD.iso képfájlra, és van egy új virtuális CD a rendszeremben:

Ezután duplán kattintok az automatikus betöltés aktiválásához, és futok Windows telepítés SDK:

Amikor eljön a sor, hogy kiválasszuk a listából a telepítendő összetevőket, a képernyőképen megjelöltek kivételével abszolút minden opciót letiltunk. Ez most segít elkerülni a szükségtelen hibákat.


Ez így van, a képernyőképen két lehetőség látható: "Windows Performance Toolkit" és "Hibakeresési eszközök Windowshoz". Válassza mindkettőt, mert a Windows Performance Toolkit minden bizonnyal jól jön a munkájában! Továbbá a "Tovább" gombra kattintás után a telepítés normál módban folytatódik. És a végén látni fogja a "Telepítés befejeződött" feliratot.
A telepítés befejezése után a Debugging Tools for Windows készlet munkakönyvtárai a következők lesznek:

  • x86-os verzióhoz:
  • x64-es verzióhoz:

Ezzel befejeződik a Hibakereső eszközök Windowshoz telepítése.

Hibakereső eszközök telepítése Windowshoz .msi fájlon keresztül

Abban az esetben, ha a Debugging Tools for Windows telepítése során az előző két módon problémák merültek fel, továbbra is van még egy, a legmegbízhatóbb és legidőtállóbb, amely, úgymond, nem egyszer segített. Egyszer, a Windows SDK-ba való integráció előtt, a Debugging Tools for Windows külön .msi telepítőként is elérhető volt, amely még mindig megtalálható, de már a Windows SDK disztribúciójában. Mivel a Windows SDK-ról már rendelkezünk ISO képpel, nem tudjuk beilleszteni a rendszerbe, hanem egyszerűen megnyitjuk a jól ismert WinRAR archiválóval, vagy bármilyen más, az ISO lemezek tartalmával működő termékkel.

A kép megnyitása után a gyökérben található "Setup" könyvtárba kell mennünk, majd ki kell választani az egyik könyvtárat:

  • A 64 bites verzió telepítése: \Setup\WinSDKDebuggingTools_amd64és csomagolja ki a dbg_amd64.msi fájlt ebből a könyvtárból.
  • A 32 bites verzió telepítéséhez: \Setup\WinSDKDebuggingTools, és csomagolja ki a dbg_x86.msi fájlt ebből a könyvtárból.

A telepítés befejezése után a Debugging Tools for Windows készlet munkakönyvtárai a következők lesznek:

  • x86-os verzióhoz: C:\Program Files (x86)\Hibakeresési eszközök Windowshoz (x86)
  • x64-es verzióhoz: C:\Program Files\Debugging Tools for Windows (x64)

Ezen a ponton a Debugging Tools for Windows telepítése befejezettnek tekinthető.

további információ

Nem tudom, mihez kapcsolódik, talán az én figyelmetlenségemből, de a Debugging Tools for Windows telepítése után a telepítő nem állítja be a könyvtár elérési útját a Path system path változóban található hibakeresővel. Ez bizonyos korlátozásokat ír elő a különféle hibakeresési feladatok közvetlenül a konzolról történő futtatására vonatkozóan. Ezért út hiányában magam írok az ablakba Környezeti változók a hibakereső eszközök elérési útja:

  • C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
  • C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

* Az Ön esetében az elérési utak eltérő bitességű operációs rendszer használata és más verziójú SDK használata miatt is eltérhetnek.

A Debugging Tools for Windows csomag segédprogramjai hordozható alkalmazásként is működhetnek, csak másoljon innen működő rendszer katalógus Microsoft Windows Performance Toolkités hordozható verzióként használja egy éles szerveren. De ne felejtse el figyelembe venni a rendszer kapacitását !! Még akkor is, ha a csomag teljes telepítését végrehajtotta egy kritikus rendszeren, a telepítés után azonnal elkezdheti a munkát, nincs szükség újraindításra.

Hibakereső eszközök Windowshoz

És most végre itt van a Hibakereső eszközök Windowshoz összetétele:

Fájl Célja
adplus.doc Az ADPlus segédprogram dokumentációja.
adplus.exe Konzolalkalmazás, amely automatizálja a cdb hibakereső munkáját, hogy kiíratokat, naplófájlokat hozzon létre egy vagy több folyamathoz.
agestore.exe Egy segédprogram elavult fájlok eltávolítására a szimbólumszerver vagy a forrásszerver által használt tárolóról.
breakin.exe Egy segédprogram, amely lehetővé teszi egyéni szünet-kombinációk küldését a folyamatoknak, hasonlóan a CTRL+C billentyűkombinációhoz.
cdb.exe Felhasználói mód konzol hibakereső.
convertstore.exe Segédprogram karakterek 2-szintűről 3-szintűre konvertálására.
dbengprx.exe Ripiter (proxy szerver) távoli hibakereséshez.
dbgpc.exe Egy RPC-hívás állapotával kapcsolatos információk megjelenítésére szolgáló segédprogram.
dbgsrv.exe A távoli hibakereséshez használt szerverfolyamat.
dbh.exe Segédprogram egy szimbólumfájl tartalmával kapcsolatos információk megjelenítésére.
dumpchk.exe Dump ellenőrző segédprogram. Segédprogram a dump fájl gyors ellenőrzéséhez.
dumpexam.exe Memóriakiíratások elemzésére szolgáló segédprogram. Az eredmény a %SystemRoot%\MEMORY.TXT fájlba kerül.
gflags.exe Globális rendszerjelzők szerkesztője. A segédprogram kezeli a rendszerleíró kulcsokat és egyéb beállításokat.
i386kd.exe Burkolat kd-hez. Ez volt az a kd, amit valaha a Windows NT/2000 alapú x86-os gépekhez készült rendszerekben hívtak? Valószínűleg kompatibilitási okokból hagyták ki.
ia64kd.exe Burkolat kd-hez. Ez volt az a kd, amit valaha a Windows NT/2000 alapú rendszerekhez hívtak ia64-es gépekhez? Valószínűleg kompatibilitási okokból hagyták ki.
kd.exe Kernel módú konzol hibakereső.
kdbgctrl.exe Kernel hibakereső eszköz. Segédprogram a kernel hibakereső kapcsolatának kezelésére és konfigurálására.
kdsrv.exe Csatlakozási szerver a KD-hez. A segédprogram egy kis alkalmazás, amely fut, és várja a távoli kapcsolatokat. A kd egy kliensen fut, és csatlakozik ahhoz a szerverhez távoli hibakeresés céljából. A kiszolgálónak és a kliensnek is ugyanabból a Hibakereső eszközök összeállításból kell származnia.
kill.exe Segédprogram a folyamatok befejezéséhez.
list.exe Segédprogram egy fájl tartalmának a képernyőn való megjelenítéséhez. Ez a miniatűr segédprogram egyetlen célt szolgált: nagy szöveg- vagy naplófájlok megtekintése. Kevés memóriaterületet foglal el, mivel részenként tölti be a szöveget.
logger.exe Egy apró hibakereső, amely csak egy folyamattal tud működni. A segédprogram beszúrja a logexts.dll fájlt a folyamattérbe, amely rögzíti a vizsgált program összes függvényhívását és egyéb műveletét.
logviewer.exe A logger.exe hibakereső által írt naplók megtekintésére szolgáló segédprogram.
ntsd.exe Microsoft NT Symbolic Debugger (NTSD). Egy hibakereső, amely megegyezik a cdb-vel, azzal a különbséggel, hogy indításkor szöveges ablakot hoz létre. A cdb-hez hasonlóan az ntsd is képes a konzolalkalmazások és a grafikus alkalmazások hibakeresésére.
pdbcopy.exe Segédprogram privát szimbólumok szimbólumfájlból való eltávolítására, a szimbólumfájlban található nyilvános szimbólumok vezérlésére.
remote.exe Segédprogram bármely KD, CDB és NTSD konzolhibakereső távoli hibakereséséhez és távvezérléséhez. Lehetővé teszi ezen konzolhibakeresők távoli futtatását.
rtlist.exe Távoli Task Viewer. A segédprogram a futó folyamatok listázására szolgál a DbgSrv szerverfolyamaton keresztül.
symchk.exe Segédprogram szimbólumok letöltéséhez a Microsoft szimbólumkiszolgálóról, és helyi szimbólum-gyorsítótár létrehozásához.
symstore.exe Segédprogram hálózat létrehozásához ill helyi raktár karakterek (2-szintű/3-szintű). A szimbólumtároló egy speciális könyvtár a lemezen, amely egy bizonyos struktúra szerint épül fel, és szimbólumokat tartalmaz. A szimbólumok gyökérkönyvtárában egy almappastruktúra jön létre, amelynek nevei megegyeznek a komponensek nevével. Az almappák mindegyike tartalmaz beágyazott almappákat speciális névvel, amelyeket bináris fájlok kivonatolása révén kaptak. A symstore segédprogram átvizsgálja a komponensmappákat, és új összetevőket ad a szimbólumtárhoz, ahonnan bármely ügyfél lekérheti azokat. Állítólag a symstore-t arra használják, hogy szimbólumokat szerezzenek be a 0-rétegű tárolóból, és helyezzék el őket a 2-rétegű/3-szintű tárolóba.
tlist.exe Feladatnézegető. Az összes futó folyamat listázására szolgáló segédprogram.
umdh.exe Felhasználói módú dump heap segédprogram. Segédprogram egy kiválasztott folyamat halmainak elemzésére. Lehetővé teszi a kupac különféle opcióinak megjelenítését.
usbview.exe USB néző. segédprogram megtekintésére USB-eszközök számítógéphez csatlakoztatva.
vmdemux.exe Demultiplexer Virtuális gép. Több elnevezett csövet hoz létre egyetlen COM-kapcsolathoz. A csatornák a virtuális gép különféle összetevőinek hibakeresésére szolgálnak
windbg.exe Felhasználói mód és kernel módú hibakereső grafikus felhasználói felülettel.

Bevezetés a WinDBG-be – 1. rész

Alekszandr Antipov

A WinDBG egy nagyszerű hibakereső. Lehet, hogy nem túl felhasználóbarát felülettel rendelkezik, és alapértelmezés szerint nincs fekete háttere, de jelenleg ez az egyik legerősebb és legstabilabb hibakereső a Windows rendszeren. Ebben a cikkben végigvezetem a WinDBG alapjain, hogy elkezdhesse használni.


A WinDBG egy nagyszerű hibakereső. Lehet, hogy nem túl felhasználóbarát felülettel rendelkezik, és alapértelmezés szerint nincs fekete háttere, de jelenleg ez az egyik legerősebb és legstabilabb hibakereső a Windows rendszeren. Ebben a cikkben végigvezetem a WinDBG alapjain, hogy elkezdhesse használni.

Ez az első cikk a WinDBG-ről szóló sorozatban. A sorozatban szereplő összes cikk listája:

  • 1. rész - telepítés, interfész, szimbólumok, távoli/helyi hibakeresés, súgórendszer, modulok, regiszterek.
  • 2. rész – töréspontok.
  • 3. rész - memória ellenőrzése, program lépésről lépésre hibakeresés, tippek és trükkök.

Ebben a cikkben a folyamatokhoz való felszerelést és csatolást tekintjük át, a következőkben pedig a töréspontokat, az átlépést és a memóriaellenőrzést.

WinDBG telepítése

A Windows 7-hez képest a WinDBG telepítési folyamata a Windows 8-ban kissé megváltozott. Ebben a részben a hibakereső telepítésével foglalkozunk mindkét operációs rendszerhez.

A WinDBG telepítése Windows 8 rendszeren

A Windows 8 rendszerben a WinDBG a Windows illesztőprogram-készletében (WDK) található. Telepítheti vizuális Stúdióés a WDK-t, vagy telepítse külön a Windows 8.1 Hibakeresési eszközök csomagját, amely tartalmazza a WinDBG-t.

A telepítő megkérdezi, hogy szeretné-e helyileg telepíteni a WinDBG-t, vagy letölteni a teljes fejlesztői csomagot egy másik számítógépre. Ez utóbbi lényegében egyenértékű offline telepítő, ami nagyon hasznos, ha a jövőben más rendszerekre szeretné telepíteni a csomagot.

1. ábra: A telepítés típusának kiválasztása

A következő ablakban törölnie kell az összes elem jelölését, kivéve a "Hibakeresési eszközök Windowshoz" elemet, és kattintson a "Letöltés" gombra.

Miután a telepítő befejezte a munkáját, lépjen abba a könyvtárba, ahová a csomagot letöltötte (alapértelmezés szerint ez: c:\Users\Username\Downloads\Windows Kits\8.1\StandaloneSDK), és hajtsa végre a telepítési eljárást.

A WinDBG telepítése Windows 7 és korábbi rendszerekre

Windows 7 és korábbi verziók esetén a WinDBG a "Hibakeresési eszközök Windowshoz" csomag része, amely a Windows SDK és a .Net Framework része. Le kell töltenie a telepítőt, majd a telepítés során válassza a "Hibakeresési eszközök Windowshoz" lehetőséget.

A telepítés során kiválasztom a "Hibakeresési eszközök" opciót az "Újraterjeszthető csomagok" alatt, hogy létrehozzak egy önálló telepítőt a későbbi telepítések megkönnyítésére.

2. ábra: Telepítési lehetőségek kiválasztása önálló telepítő létrehozásához

A telepítés befejeztével rendelkeznie kell a WinDBG telepítőivel különféle platformok(a c:\Program Files\Microsoft SDKs\Windows\v7.1\Redist\Debugging Tools for Windows\ mappában).

3. ábra: Mappa WinDBG telepítőkkel különböző platformokhoz

WinDBG interfész

4. ábra: A WinDBG megjelenése

Ha először látja a WinDGB megjelenését és működését, rájön, hogy a hibakereső ijesztően egyszerű. A legtöbb WinDBG függvényt a folyamathibakeresés során tanuljuk meg. Ahelyett, hogy időt vesztegetnénk a felület leírásával, a következő részekben csak a legfontosabb pontokra térünk ki.

A legalapvetőbb dolog, amit a hibakereső felületről tudni kell, a parancsablak, amely két részből áll. Az első terület: egy ablak, ahol a parancsok végrehajtásának eredménye megjelenik. Második terület: egy kis szövegmező a parancsok beviteléhez.

5. ábra: WinDBG parancsablak

Szimbólumok

A legtöbb esetben a WinDBG nem igényel különleges beállításokat, és a dobozból kivetve megfelelően működik. De egy fontos dolog, amit módosítani kell, az a szimbólumok. A szimbólumok olyan fájlok, amelyek a programfordítás során a végrehajtható fájllal együtt jönnek létre, és hibakeresési információkat (függvényeket és változóneveket) tartalmaznak. A hibakeresési információk lehetővé teszik egy alkalmazás funkcióinak felfedezését hibakeresés vagy szétszerelés közben. A Microsoft számos összetevője szimbólumokkal van összeállítva, amelyeket a Microsoft Symbol Serveren keresztül terjesztenek. A többi végrehajtható fájl esetében nem minden olyan rózsás – nagyon ritkán hibakeresési információkat tartalmazó fájlok is mellékelve vannak az alkalmazáshoz. A legtöbb esetben a vállalatok korlátozzák az ilyen információkhoz való hozzáférést.

A WinDBG Microsoft Symbol Server használatára való beállításához lépjen a Fájl:Szimbólumfájl elérési útja szakaszba, és állítsa be az elérési utat a következőre: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols. Persze kicsit furcsa, hogy a csillagokat határolóként használják. A Microsoft Symbol Server beállítása után a szimbólumok letöltésre kerülnek a C:\Symbols mappába.

6. ábra: Microsoft beállítás Szimbólum szerver

A WinDBG szükség esetén automatikusan betölti a bináris fájlok szimbólumait. Saját szimbólummappát is hozzáadhat, például:

SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder

Szimbólumok hozzáadása hibakeresés közben

Ha szimbólumokat kell importálnia hibakeresés közben, akkor ezt megteheti a .sympath segítségével (a parancsablak megjelenik, amikor bekapcsolódik a folyamatba). Például a c:\SomeOtherSymbolFolder mappa hozzáadásához írja be a következő parancsot:

0:025> .sympath+ c:\SomeOtherSymbolFolder
A szimbólumkeresési útvonal: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder
A kibővített szimbólumkeresési útvonal: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\someothersymbolfolder

Az elérési utak hozzáadása vagy módosítása után célszerű újratölteni a szimbólumokat:

0:025> .reload
Az aktuális modulok újratöltése
................................................................
...............................................

Betöltött szimbólumok ellenőrzése

Az x*! paranccsal láthatja, hogy mely modulokba van betöltött szimbólum. Bár a WinDBG csak szükség szerint tölti be a szimbólumokat, az x*! betölthető szimbólumokat jelenít meg. Kényszerítheti a szimbólumok betöltését az ld * paranccsal (ez eltarthat egy ideig, és leállíthatja ezt a folyamatot a Debug:Break megnyitásával).

Most láthatjuk az egyes modulokhoz tartozó szimbólumokat.

8. ábra: Szimbólumok listája

Helyi folyamat hibakeresése

A helyi folyamatok hibakeresése során két lehetőség közül választhat:

  1. Ragaszkodj már hozzá futó folyamat.
  2. Indítsa el a folyamatot a WinDBG-n keresztül.

Mindegyik módszernek megvannak a maga előnyei és hátrányai. Ha mondjuk a WinDBG-n keresztül futtatja a programot, akkor rendelkezésre áll néhány speciális hibakeresési lehetőség (például kupac hibakeresés), amelyek az alkalmazás összeomlását okozhatják. Másrészt vannak olyan programok is, amelyek összeomlanak, ha hibakeresőt csatolunk hozzájuk. Egyes alkalmazások (különösen a rosszindulatú programok) indításkor ellenőrzik a hibakereső jelenlétét a rendszerben, és ennek megfelelően ebben az esetben van értelme egy már futó folyamathoz ragaszkodni. Néha előfordul egy Windows-szolgáltatás hibakeresése, amely beállít bizonyos paramétereket az indításkor, ezért a hibakeresési folyamat egyszerűsítése érdekében jobb, ha egy futó folyamathoz csatlakozik, és nem indítja el a szolgáltatást egy hibakeresőn keresztül. Vannak, akik azt állítják, hogy egy folyamat hibakeresőn keresztüli futtatása komoly hatással van a teljesítményre. Röviden, próbálja ki mindkettőt, és válassza ki a legmegfelelőbbet. Ha valamilyen oknál fogva egy adott módszert preferálsz, oszd meg gondolataidat kommentben!

Egy folyamat elindítása

Ha olyan önálló alkalmazás hibakeresését végzi, amely helyileg fut, és nincs hálózatba kapcsolva, érdemes lehet a WinDBG-n keresztül futtatni. Ez azonban nem jelenti azt, hogy nem csatlakozhat egy már futó folyamathoz. Válassza ki az Ön számára legkényelmesebb módot.

A folyamat elindítása nem nehéz. Lépjen a "File:Open Executable" elemre, és válassza ki a végrehajtani kívánt fájlt. Megadhat argumentumokat is, vagy beállíthatja a kezdőkönyvtárat:

9. ábra: Futtatható fájl kiválasztása hibakereséshez

Folyamat kapcsolat

A már futó folyamathoz való csatlakozás szintén nem nehéz. Azonban kérjük, vegye figyelembe, hogy bizonyos esetekben időbe telhet, amíg megtalálja a pontos hibakeresési folyamatot. Egyes böngészők például egy szülőfolyamatot, majd több további folyamatot hoznak létre minden lapon. Tehát a hibakereső összeomlási kiírattól függően érdemes lehet nem a szülőfolyamathoz kapcsolni, hanem a laphoz társított folyamathoz.

Ha egy már futó folyamathoz szeretne csatolni, lépjen a „Fájl:Csatlakozás folyamathoz” elemre, majd válassza ki a PID-t vagy a folyamat nevét. Ne feledje, hogy megfelelő jogosultságokkal kell rendelkeznie a folyamatba való bekapcsolódáshoz.

10. ábra: A kapcsolódni kívánt folyamat kiválasztása

Ha a csatlakozás után az alkalmazás felfüggesztette a munkáját, a megfelelő négyzet bejelölésével használhatja a "Noninvaise" módot.

Távoli folyamat hibakeresése

Néha előfordulhat, hogy egy távoli rendszeren lévő folyamatot hibakeresni kell. Sokkal kényelmesebb lenne ezt a feladatot egy helyi hibakeresővel kezelni a virtuális gép vagy az RDP használata helyett. Vagy esetleg a LoginUI.exe folyamat hibakeresését végzi, amely csak akkor érhető el, ha a rendszer le van zárva. Az ehhez hasonló helyzetekben használhatja a WinDBG helyi verzióját, és távolról csatolhatja a folyamatokhoz. E problémák megoldására két leggyakoribb módszer létezik.

Meglévő hibakereső munkamenetek

Ha már elkezdte a program helyi hibakeresését (egy folyamat WinDBG-n keresztüli csatolásával vagy elindításával), akkor megadhat egy adott parancsot, és a WinDBG elindít egy "hallgatót" (hallgatót), amelyhez a távoli hibakereső csatlakozhat. Ehhez használja a .server parancsot:

Szerver tcp:port=5005

A fenti parancs futtatása után a következő figyelmeztetést láthatja:

11. ábra: Figyelmeztető üzenet, amely a „hallgató” létrehozására szolgáló parancs futtatása után jelenhet meg

Ezután a WinDBG jelenti, hogy a szerver fut:

0:005> .server tcp:port=5005
0: -remote tcp:Port=5005,Szerver=USER-PC

Most már csatlakozhat egy távoli gazdagépről egy már létező hibakereső munkamenethez, ha a "Fájl:Kapcsolódás távoli munkamenethez" elemre lép, és a szövegmezőbe írja be a következőt: tcp:Port=5005,Server=192.168.127.138

12. ábra: Távoli kapcsolat a hibakeresési munkamenethez

A csatlakozás után megerősítést kap a távoli kliensen:


a szerver elindult. Az ügyfél ezen parancssorok bármelyikéhez kapcsolódhat
0: -remote tcp:Port=5005,Szerver=USER-PC
GÉPNÉV\Felhasználó (tcp 192.168.127.138:13334) csatlakozott: 2013. december 16. hétfő, 09:03:03

és üzenj be helyi verzió hibakereső:

GÉPNÉV\Felhasználó (tcp 192.168.127.138:13334) csatlakozott: 2013. december 16. hétfő, 09:03:03

Hozzon létre egy távoli szervert

Létrehozhatsz is külön szerver a WinDBG segítségével távolról csatlakozzon hozzá, és válassza ki a hibakereséshez szükséges folyamatot. Ezt a dbgsrv.exe fájl használatával teheti meg, amelyben a folyamatok hibakeresését tervezi. Egy ilyen szerver indításához futtassa a következő parancsot:

dbgsrv.exe -t tcp:port=5005

13. ábra: Távoli szerver indítása

És ismét egy biztonsági figyelmeztetést kaphat, amelyet el kell fogadnia:

14. ábra: Biztonsági üzenet, amely megjelenhet a hibakereső kiszolgáló indításakor

Akkor csatlakozhat a hibakereső szerverhez, ha megnyitja a "Fájl: Csatlakozás távoli csonkhoz" fájlt, és beírja a következő sort a szövegmezőbe: tcp:Port=5005,Szerver=192.168.127.138

15. ábra: Csatlakozás a hibakereső szerverhez

Csatlakozás után nem fog kapni semmilyen jelet arról, hogy csatlakozott, de ha a "Fájl:Csatlakozás folyamathoz" menüpontra lép, megjelenik a hibakereső szerverfolyamatok listája (ahol a dbgsrv.exe fut). Most úgy kapcsolódhat be a folyamatba, mintha helyben tenné.

Súgó rendszer

A WinDBG súgórendszere nagyszerű. Amellett, hogy valami újat tanul, képesnek kell lennie arra, hogy segítséget kapjon egy parancsról. A .hh paranccsal elérheti a WinDBG súgóját:

Súgót is kaphat egy adott parancshoz. Ha például segítséget szeretne kapni a .reload paranccsal kapcsolatban, használja a következő parancsot:

windbg> .hh .reload

Vagy egyszerűen lépjen a „Súgó:Tartalom” szakaszba.

Modulok

A program futása közben különféle modulokat importálnak, amelyek biztosítják az alkalmazás funkcionalitását. Ezért, ha tudja, hogy egy alkalmazás mely modulokat importálja, jobban megértheti, hogyan működik. Sok esetben a program által betöltött adott modulban kell hibakeresést végezni, nem magát a végrehajtható fájlt.

A folyamathoz való csatlakozás után a WinDBG automatikusan megjeleníti a betöltött modulokat. Például alább láthatók a modulok, miután csatlakoztam a calc.exe-hez:

Microsoft (R) Windows Debugger 6.12.0002.633 X86 verzió
Szerzői jog (c) Microsoft Corporation. Minden jog fenntartva.

*** várjon függőben lévő csatolással
A szimbólum keresési útvonala: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
A végrehajtható keresési útvonal:
ModLoad: 00a70000 00b30000 C:\Windows\system32\calc.exe
ModLoad: 77630000 7776c000 C:\Windows\SYSTEM32\ntdll.dll
ModLoad: 77550000 77624000 C:\Windows\system32\kernel32.dll
ModLoad: 75920000 7596a000 C:\Windows\system32\KERNELBASE.dll
ModLoad: 76410000 77059000 C:\Windows\system32\SHELL32.dll
ModLoad: 77240000 772ec000 C:\Windows\system32\msvcrt.dll
ModLoad: 76300000 76357000 C:\Windows\system32\SHLWAPI.dll
ModLoad: 75cd0000 75d1e000 C:\Windows\system32\GDI32.dll
ModLoad: 75fa0000 76069000 C:\Windows\system32\USER32.dll
ModLoad: 777b0000 777ba000 C:\Windows\system32\LPK.dll
ModLoad: 774b0000 7754d000 C:\Windows\system32\USP10.dll
ModLoad: 73110000 732a0000 C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_
6595b64144ccf1df_1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
ModLoad: 75a80000 75bdc000 C:\Windows\system32\ole32.dll
ModLoad: 76360000 76401000 C:\Windows\system32\RPCRT4.dll
ModLoad: 777c0000 77860000 C:\Windows\system32\ADVAPI32.dll
ModLoad: 75be0000 75bf9000 C:\Windows\SYSTEM32\sechost.dll
ModLoad: 76270000 762ff000 C:\Windows\system32\OLEAUT32.dll
ModLoad: 74590000 745d0000 C:\Windows\system32\UxTheme.dll
ModLoad: 74710000 748ae000 C:\Windows\WinSxS\x86_microsoft.windows.common-
ModLoad: 703d0000 70402000 C:\Windows\system32\WINMM.dll
ModLoad: 74c80000 74c89000 C:\Windows\system32\VERSION.dll
ModLoad: 77770000 7778f000 C:\Windows\system32\IMM32.DLL
ModLoad: 75c00000 75ccc000 C:\Windows\system32\MSCTF.dll
ModLoad: 74130000 7422b000 C:\Windows\system32\WindowsCodecs.dll
ModLoad: 74260000 74273000 C:\Windows\system32\dwmapi.dll
ModLoad: 756d0000 756dc000 C:\Windows\system32\CRYPTBASE.dll
ModLoad: 75e60000 75ee3000 C:\Windows\system32\CLBCatQ.DLL
ModLoad: 6ef10000 6ef4c000 C:\Windows\system32\oleacc.dll

Később a hibakeresési folyamat során ezt a listát ismét megjelenítheti az lmf paranccsal:

0:005>lmf
kezdés vége modul neve
00a70000 00b30000 calc C:\Windows\system32\calc.exe
6ef10000 6ef4c000 oleacc C:\Windows\system32\oleacc.dll
703d0000 70402000 WINMM C:\Windows\system32\WINMM.dll
73110000 732a0000 gdiplus C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_
1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
74130000 7422b000 WindowsCodecs C:\Windows\system32\WindowsCodecs.dll
74260000 74273000 dwmapi C:\Windows\system32\dwmapi.dll
74590000 745d0000 UxTheme C:\Windows\system32\UxTheme.dll
74710000 748ae000 COMCTL32 C:\Windows\WinSxS\x86_microsoft.windows.common-
controls_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc\COMCTL32.dll
74c80000 74c89000 C VERZIÓ:\Windows\system32\VERSION.dll
756d0000 756dc000 CRYPTBASE C:\Windows\system32\CRYPTBASE.dll
75920000 7596a000 KERNELBASE C:\Windows\system32\KERNELBASE.dll
75a80000 75bdc000 ole32 C:\Windows\system32\ole32.dll
75be0000 75bf9000 sechost C:\Windows\SYSTEM32\sechost.dll
75c00000 75ccc000 MSCTF C:\Windows\system32\MSCTF.dll
75cd0000 75d1e000 GDI32 C:\Windows\system32\GDI32.dll
75e60000 75ee3000 CLBCatQ C:\Windows\system32\CLBCatQ.DLL
75fa0000 76069000 USER32 C:\Windows\system32\USER32.dll
76270000 762ff000 OLEAUT32 C:\Windows\system32\OLEAUT32.dll
76300000 76357000 SHLWAPI C:\Windows\system32\SHLWAPI.dll
76360000 76401000 RPCRT4 C:\Windows\system32\RPCRT4.dll
76410000 77059000 SHELL32 C:\Windows\system32\SHELL32.dll
77240000 772ec000 msvcrt C:\Windows\system32\msvcrt.dll
774b0000 7754d000 USP10 C:\Windows\system32\USP10.dll
77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll
77630000 7776c000 ntdll C:\Windows\SYSTEM32\ntdll.dll
77770000 7778f000 IMM32 C:\Windows\system32\IMM32.DLL
777b0000 777ba000LPK C:\Windows\system32\LPK.dll
777c0000 77860000 ADVAPI32 C:\Windows\system32\ADVAPI32.dll

Egy adott modul letöltési címét az "lmf m" paranccsal is megtudhatja:

0:005> lmf m kernel32
kezdés vége modul neve
77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll

Egy adott modul képfejlécéről is tájékozódhat a !dh kiterjesztéssel ( Felkiáltójel kiterjesztést jelez):

0:005> !dh kernel32

Fájltípus:DLL
FÁJLFEJLESZ ÉRTÉKEI
14C gép (i386)
4 számú szakasz
4A5BDAAD idő dátum bélyegző 2009. július 13. hétfő 21:09:01

0 fájlmutató a szimbólumtáblázatra
0 számú szimbólum
Az opcionális fejléc E0 mérete
2102 jellemzői
Végrehajtható
32 bites word gép
DLL

OPCIONÁLIS FEJLŐ ÉRTÉKEI
10B varázslat #
9.00 linker verzió
C4600 méretkód
Az inicializált adatok C800 mérete
0 méretű nem inicializált adat
510C5 belépési pont címe
1000 alapkód
----- új -----
77550000 képbázis
1000 szakasz-igazítás
200 fájl igazítás
3 alrendszer (Windows CUI)
6.01 operációs rendszer verzió
6.01 képverzió
6.01 alrendszer verzió
D4000 méretű kép
800 méretű fejléc
D5597 ellenőrző összeg
00040000 veremtartalék mérete
00001000 stack-commit mérete
00100000 nagyságú kupactartalék
00001000 halom véglegesítés mérete
140 DLL jellemzők
dinamikus alap
NX kompatibilis
B4DA8 [A915] az Export Directory címe
BF6C0 [ 1F4] az Import Directory címe
C7000 [ 520] a Resource Directory címe
0 [ 0] a kivételek címtárának címe
0 [ 0] a Security Directory címe
C8000 [B098] az alap áthelyezési címtár címe
C5460 [ 38] a Debug Directory címe
0 [ 0] a leírási könyvtár címe
0 [ 0] a speciális címtár címe
0 [ 0] a szál tárolási címtárának címe
816B8 [ 40] a Betöltési konfigurációs könyvtár címe
278 [ 408] a Bound Import Directory címe
1000 [DE8] az Import Address Table Directory címe
0 [ 0] a Delay Import Directory címe
0 [ 0] a COR20 fejléckönyvtár címe
0 [ 0] a fenntartott címtár címe

SZAKASZ FEJLŐJE #1
.szöveges név
C44C1 virtuális méret
1000 virtuális cím
C4600 nyers adatok mérete
800 fájlmutató a nyers adatokra

0 költöztetések száma
0 sorszámok száma
60000020 zászló
Kód
(nincs igazítás megadva)
Hajtsa végre a Read parancsot

Könyvtárak hibakeresése (2)
Írja be a Méret Címmutatót
cv 25 c549c c4c9c Formátum: RSDS, guid, 2, kernel32.pdb
(10) 4 c5498 c4c98

SZAKASZ FEJLESZTŐ #2
.adatnév
FEC virtuális méret
C6000 virtuális cím
A nyers adatok E00 mérete
C4E00 fájlmutató a nyers adatokra
0 fájlmutató az áthelyezési táblázatra
0 fájlmutató a sorszámokhoz
0 költöztetések száma
0 sorszámok száma
C0000040 zászlók
inicializált adatok
(nincs igazítás megadva)
Ír olvas

SZAKASZ FEJLŐJE #3
.rsrc név
520 virtuális méret
C7000 virtuális cím
600 méretű nyers adat
C5C00 fájlmutató a nyers adatokra
0 fájlmutató az áthelyezési táblázatra
0 fájlmutató a sorszámokhoz
0 költöztetések száma
0 sorszámok száma
40000040 zászló
inicializált adatok
(nincs igazítás megadva)
Csak olvasható

SZAKASZFEJLŐ #4
.relocname
B098 virtuális méret
C8000 virtuális cím
A nyers adatok B200-as mérete
C6200 fájlmutató a nyers adatokra
0 fájlmutató az áthelyezési táblázatra
0 fájlmutató a sorszámokhoz
0 költöztetések száma
0 sorszámok száma
42000040 zászló
inicializált adatok
Eldobható
(nincs igazítás megadva)
Csak olvasható

Üzenetek és kivételek

A folyamathoz való csatolás után először a modulok listája jelenik meg, majd más üzenetek jelenhetnek meg. Például amikor rákapcsolunk a calc.exe fájlra, a WinDBG automatikusan beállít egy töréspontot (ami csak az alkalmazás leállítására szolgáló jelölő). A töréspont információi megjelennek a képernyőn:

(da8.b44): Törési utasítás kivétel – 80000003 kód (első esély)

Ez a bizonyos üzenet kivétel, nevezetesen az első esély kivétel. Lényegében a kivétel egy speciális feltétel, amely egy program végrehajtása során fordul elő. Első esély kivétel azt jelenti, hogy a program azonnal leállt a kivétel bekövetkezte után. A második esély kivétele azt jelenti, hogy a kivétel bekövetkezte után néhány művelet végrehajtásra kerül, majd a program leállítja a munkáját.

Regisztrálok

Az üzenetek és kivételek megjelenítése után a hibakereső kiadja a processzorregiszterek állapotát. A regiszterek olyan speciális változók a processzoron belül, amelyek apró információkat tárolnak, vagy nyomon követik valami állapotát a memóriában. A processzor nagyon gyorsan tudja feldolgozni az ezekben a regiszterekben lévő információkat. Ez sokkal gyorsabb, mintha minden alkalommal információt kapna a buszon a RAM-ból.

A calc.exe-hez való csatlakozás után a WinDBG automatikusan megjeleníti a következő regiszterekről szóló információkat:

eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246

Később az r paranccsal ismét lemásolhatja ezeket az információkat:

0:005>r
eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
eip=77663540 esp=02affd9c ebp=02affdc8 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ntdll!DbgBreakPoint:
77663540 cc int 3

Ha egy adott regiszter értékét szeretnénk megkapni, akkor a következő parancsot hajthatjuk végre:

0:005> r ex
eax=7ffd9000

Egyidejűleg több nyilvántartásból is beszerezhető az információ az alábbiak szerint:

0:005> r eax,ebp
eax=7ffd9000 ebp=02affdc8

Mutató az utasításra

Az utolsó parancs a futtatási utasításokról szól. Itt is megjelenik az információ, mint az r parancs esetében, hogy mi tartalmazza az EIP regisztert. Az EIP egy regiszter, amely tartalmazza a helyet következő utasítás hogy a processzor hajtsa végre. Amit a WinDBG megjelenít, az az u eip L1 parancs megfelelője, amely után a WinDBG az EIP-regiszterben megadott címre megy, ezt a részt összeállítási kóddá alakítja és megjeleníti a képernyőn.

ntdll!DbgBreakPoint:
77663540 cc int 3

maradj kapcsolatban

A következő cikkekben megvizsgáljuk, hogyan használhatjuk a WinDBG-t a harcban: töréspontok, léptető hibakeresés és megtekintési memória. Ne válts! J.