Ak máte tzv modrá obrazovka smrť v systéme Windows 10 a ste pripravení upadnúť do nervovej kómy, dať sa dokopy a pokúsiť sa problém vyriešiť. Na začiatok stojí za to povedať, že táto zlovestná správa vás signalizuje o kritickom stave systémová chyba. Okrem toho nie je vždy možné zachytiť okamih a mať čas prečítať si chybový kód, keď Windows spadne na modrú obrazovku smrti a zariadenie sa reštartuje. Okamžite si všimneme, že existuje veľké množstvo riešenia tohto problému, ako aj príčiny modrej obrazovky. V tomto článku sa pokúsime zvážiť pravdepodobné príčiny vzhľad modrej obrazovky šťastia, ako aj o možné riešenia Problémy.

V drvivej väčšine prípadov modrá obrazovka smrti signalizuje chybu BAD_POOL_CALLER - stop 0x000000c2. Úprimne povedané, je ťažké diagnostikovať túto chybu, ale je možné, že sa pokúsime opísať algoritmus vašich ďalších akcií na príklade tejto chyby.

Ak chcete správne diagnostikovať problém, musíte najskôr analyzovať špeciálny súbor systém nazývaný minidump (výpis pamäte). Vytváranie takýchto súborov vedie k zlyhaniu v systéme, navyše nás môžu informovať - ​​čo presne viedlo k zlyhaniu.

1. Ak chcete povoliť takéto automatické zaznamenávanie malého výpisu pamäte (v predvolenom nastavení zakázané), prejdite do vlastností počítača a prejdite do časti " Extra možnosti systémy" (toto zahrnutie sa poskytuje pre všetky systémy, nielen pre Windows 10):

Spravidla sa všetky minidump súbory uložia, keď sa objaví modrá obrazovka smrti (BSOD) a nájdete ich v priečinku C:\Windows\Minidump. Je pozoruhodné, že názov súboru obsahuje Aktuálny dátum- kedy bol vytvorený, čo uľahčuje identifikáciu dátumu, kedy sa chyba vyskytla, najmä ak vezmeme do úvahy, že takýchto súborov môže byť viac.

Dva spôsoby, ako dešifrovať minidump malej pamäte

Prvý spôsob, je použiť pomerne populárny nástroj BlueScreenView. Tento nástroj môže byť tiež dobrou voľbou na analýzu výpisu pamäte. Použitie tejto pomôcky sa hodí ako spôsob identifikácie problematického ovládača.

Okrem toho je obzvlášť pozoruhodný v tom, že sa dá použiť na zobrazenie BSOD (modrá obrazovka smrti) ako v zmrazenom obrázku, ako to bolo, keď systém havaroval. Zobrazuje čas a dátum poruchy, podrobnosti o ovládači alebo module s verziou a stručný popis. Okrem toho je nástroj dostupný v mnohých jazykoch vrátane ruštiny. Takže nástroj BlueScreenView je to pravé, ak potrebujete rýchlo analyzovať výpisy pamäte počas BSOD.

Pre druhý spôsob musíte si nainštalovať Debugging Tools for Windows a tiež si stiahnuť pomôcku bsdos_utility. Ďalej, po rozbalení skriptu bsdos_utility.cmd by ste ho mali presunúť na jednotku C:\ (môžete vytvoriť samostatný priečinok, ale nezabudnite, že reťazec adresy spustenia skriptu sa bude líšiť od nášho príkladu). Potom na príkazový riadok napíšte:

C:\bsdos_utility.cmd

Po zobrazení zoznamu všetkých výpisov zo zoznamu C:\Windows\Minidump\ sa skript opýta, ktorý výpis sa má analyzovať. Požadovaný minidump si môžete vybrať aj sami pri spustení skriptu:

Týmto spôsobom je možné zistiť hmotnosť Chyby systému Windows 10, čo spôsobilo BSOD, ako aj problematické .exe programy, ktoré spôsobili modrú obrazovku.

V ďalšom kroku výberu komponentov na inštaláciu ( Vyberte funkcie, ktoré chcete nainštalovať) označte len to, čo potrebujeme - Nástroje na ladenie pre Windows a stlačte Inštalácia

Sada nástrojov sa stiahne a nainštaluje z internetu do priečinka špecifikovaného na prvej obrazovke.

Po dokončení inštalácie nájdeme v ponuke „Štart“ alebo na úvodnej obrazovke v skupine skratiek Súpravy Windows užitočnosť windbg a spustite ho s právami správcu

Ak sa z nejakého dôvodu nepodarilo nájsť skratku, môžete spustiť spustiteľný súbor z inštalačného adresára - C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\windbg.exe

V hlavnom menu programu windbg vyberte položky súbor > Cesta k súboru symbolov. V okne, ktoré sa otvorí, vložte riadok definujúci let do lokálneho adresára vyrovnávacej pamäte symbolov a jej online zdroja:

SRV*C:\Windows\symbol_cache*http://msdl.microsoft.com/download/symbols

Nastavenia uložíme výberom položiek v hlavnom menu súbor > Uložiť pracovný priestor

Otvorte súbor výpisu pamäte výberom z ponuky súbor > Otvorte Crash Dump...

Vyberte súbor MEMORY.DMP(štandardne sa nachádza v adresári C:\Windows) a kliknite OTVORENÉ

Zobrazí sa informácia o tom, ktorý konkrétny spustiteľný modul spôsobil, že systém prestal fungovať. Kliknutím na hypertextový odkaz !analyzovať-v môžete získať podrobnejšie informácie o stave systému v čase chyby zastavenia.

Rovnaké informácie je možné získať aj pomocou príkazového riadku s použitím približne nasledujúcej postupnosti príkazov:

cd /d" C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\" kd -z "D:\DOWNLOADS\VM05\MEMORY.DMP " .logopen C:\Debuglog.txt .sympath srv*C:\Windows\symbol_cache*http://msdl.microsoft.com/download/symbols

V tomto príklade sa všetky informácie o analýze výpisu vypíšu v čitateľnej forme do súboru C:\Debuglog.txt

Zdroje informácií:

Dobré popoludnie, milí kolegovia a čitatelia blogu. Dnes vám chcem povedať, ako analyzovať výpis pamäte Windows 10 Redstone. To sa deje vo väčšine prípadov, keď sa zobrazí modrá obrazovka smrti s chybou, po ktorej sa počítač reštartuje. A túto analýzu pomáha pochopiť príčinu zlyhania.

Nastavenie výpisu pamäte systému Windows 10

Čo je teda výpis pamäte v operačnom systéme Windows 10 Redstone. Popísal som vám vyššie spoločná príčina pri ktorom sa objaví výpis systémovej pamäte a toto sú modré obrazovky smrti. Dôvody ich vzhľadu sú veľmi rozsiahle:

Toto je len malý zovšeobecnený zoznam, keďže z modrých obrazoviek je veľa chybových kódov, uvediem tie najnovšie.

Našou úlohou je vedieť nájsť tieto súbory na diagnostiku a vedieť ich interpretovať, aby sme získali informácie o probléme.

Kde je nakonfigurovaný výpis zlyhaní systému Windows 10?

Na začiatok poďme zistiť, kde je vykonané nastavenie, ktoré je zodpovedné za výpis pamäte pri páde systému Windows 10. Kliknite pravým tlačidlom myši na tlačidlo Štart systému Windows 10 a z obsahové menu vyberte Systém.

V okne Systém, ktoré sa otvorí, sa nachádzate vľavo horný roh vyberte Rozšírené systémové nastavenia.

Tu sa konfiguruje výpis pamäte systému Windows 10. Kliknite na položku nastavení v Boot and Recovery.

Z nastavení, výpisu pamäte systému Windows 10, chcem poznamenať nasledujúce:

  • Nahrávanie udalosti v syslog> tu budú do protokolov pridané informácie o modrej obrazovke operačný systém.
  • Bežať automatický reštart> pokračovať po chybe
  • Zapísať informácie o ladení > umožňuje vybrať typ súboru výpisu, viac o tom nižšie.
  • Nahradiť existujúci súbor výpisu, čo je užitočné začiarkavacie políčko, keďže tieto výpisy môžu vážiť desiatky gigabajtov, je to veľmi dôležité pre malé jednotky ssd.

Typy výpisov pamäte

Pozrime sa, ako sa líšia možnosti zaznamenávania ladiacich informácií.

  • Malý výpis pamäte 256 kB: Súbory malého výpisu pamäte obsahujú nasledujúce informácie:

– fatálne chybové hlásenie, jeho parametre a ďalšie údaje;

– zoznam načítaných ovládačov;

– kontext procesora ( PRCB) na ktorom k poruche došlo;

EPROCESS) pre proces, ktorý spôsobil chybu;

– informácie o procese a kontext jadra ( ETHREAD) pre vlákno, ktoré spôsobilo chybu;

– zásobník volaní režimu jadra pre vlákno, ktoré spôsobilo chybu.

Používa sa, keď máte veľmi málo miesto na disku na tvojom lokálny disk. Takto darujeme užitočná informácia, čo nemusí stačiť na diagnostiku modrej obrazovky.

Minidump je uložený pozdĺž cesty C:\Windows\Minidump

  • Výpis pamäte jadra > zaznamenáva iba pamäť jadra. V závislosti od množstva fyzickej pamäte počítača v tomto prípade vyžaduje stránkovací súbor 50 až 800 MB alebo jedna tretina fyzickej pamäte počítača na zavádzacom zväzku.
  • Úplný výpis pamäte > no, všetko je jasné už z názvu. Píše úplne všetko, toto je maximum informácií o modrej obrazovke, poskytuje stopercentnú diagnostiku problému.

Nachádza sa pozdĺž cesty C:\Windows\Memory.dmp

  • Výpis aktívnej pamäte > dostáva sa sem aktívna pamäť hostiteľského stroja, je to funkcia skôr pre serverové platformy, keďže sa dajú použiť na virtualizáciu a aby sa do výpisu nedostali informácie o virtuálnych strojoch, bola vymyslená táto možnosť.

Táto krátka poznámka má za cieľ ukázať, ako môžete nakonfigurovať systém, aby ste mali k dispozícii núdzovú situáciu skládka Pamäť systému Windows , teda výpis, ktorý môže byť vytvorený v prípade kritického zlyhania, charakterizovaného objavením sa modrej obrazovky smrti (BSOD). Čo je to skládka vo všeobecnosti, prečo ju potrebujeme a čo to je, aké problémy má riešiť a aké informácie obsahuje?

Výpis pamäte je obsah pracovnej pamäte procesu, jadra alebo celého operačného systému, vrátane pracovných oblastí, Ďalšie informácie o stave registrov procesora, obsahu zásobníka a iných obslužných štruktúr.

Prečo potrebujeme tento obsah, t.j. Výpis pamäte systému Windows? Azda najbežnejší výpis pamäte sa používa na skúmanie príčin zlyhania systému (), ktorý spôsobil úplné zastavenie operačného systému. Okrem toho môže byť stav pamäte použitý na iné účely. Dôležitý je aj fakt, že výpis pamäte je doslova jediným spôsobom, ako získať informácie o akomkoľvek zlyhaní! A odstránenie (prijatie) výpisu systémovej pamäte je v skutočnosti jedinou presnou metódou získania okamžitej tlače (kópie) obsahu fyzickej pamäte systému.

Čím presnejšie bude obsah výpisu odrážať stav pamäte v čase poruchy, tým viac budeme môcť analyzovať núdzovú situáciu. Preto je mimoriadne dôležité získať presne aktuálnu kópiu fyzickej pamäte systému určitý momentčas bezprostredne pred haváriou. A jediný spôsob, ako to urobiť, je vytvoriť úplný výpis z havárie. Dôvod je celkom triviálny – keď dôjde k crash dumpu systémovej pamäte, či už v dôsledku zlyhania alebo v dôsledku umelo simulovanej situácie, systém je v tomto momente prijímania kontroly núdzových funkcií (KeBugCheckEx) v absolútne nezmenený (statický) stav, preto medzi okamihom, keď dôjde k zlyhaniu, a časom zápisu údajov na médium, sa obsah fyzickej pamäte nič nemení a na disk sa zapíše v pôvodnom stave. To je teoreticky, ale občas v živote, ale sú situácie, že v dôsledku chybných hardvérových komponentov môže dôjsť k poškodeniu samotného výpisu pamäte alebo k zamrznutiu stanice počas procesu nahrávania výpisu.

V drvivej väčšine prípadov, od okamihu, keď sa začne proces vytvárania výpisu zlyhávania pamäte, až do okamihu zápisu obsahu pamäte na disk, zostávajú informácie v pamäti nezmenené.

Teoreticky sa statika (nezmeniteľnosť) pamäťovej „stopy“ vysvetľuje tým, že pri zavolaní funkcie KeBugCheckEx, ktorá zobrazí informáciu o havárii a spustí proces vytvárania výpisu pamäte, je systém už úplne zastavený a obsah fyzickej pamäte sa zapíše do blokov obsadených na disku stránkovacím súborom, po čom sa už pri následnom zavádzaní operačného systému vysype do súboru na systémovom médiu. No, takmer raz som pozoroval situáciu, keď došlo k zlyhaniu základná doska zabránili uloženiu výpisu pamäte: a) zmrazenie logiky uloženia výpisu počas prevádzky (proces nedosiahol 100%), b) poškodenie súboru výpisu pamäte (ladiaci program preklial štruktúry), c) zápis súborov výpisu pamäte.dmp z nulová dĺžka. Preto aj napriek tomu, že systém bol v čase vytvorenia výpisu pamäte už úplne zastavený a funguje iba núdzový kód, chybný hardvér dokáže bez výnimky v ktorejkoľvek fáze prevádzky vykonať vlastné úpravy akejkoľvek logiky.
Tradične sa v počiatočnom štádiu na uloženie výpisu pamäte systému Windows používajú diskové bloky pridelené stránkovaciemu súboru (stránkovaciemu súboru). Potom, keď sa objaví modrá obrazovka a dôjde k reštartu, údaje sa presunú do samostatného súboru a potom sa súbor premenuje podľa vzoru v závislosti od typu výpisu. Avšak počnúc od Verzie systému Windows Vista, tento stav sa dá zmeniť, teraz má používateľ možnosť uložiť vyhradený výpis bez zapojenia odkladacieho súboru a umiestniť informácie o havárii do dočasného súboru. Bolo to urobené s cieľom odstrániť chyby konfigurácie spojené s nesprávnym nastavením veľkosti a polohy stránkovacieho súboru, čo často viedlo k problémom v procese ukladania výpisu pamäte.
Pozrime sa, aké typy výpisov umožňuje operačný systém Windows vytvárať:

  • Výpis pamäte procesov (aplikácia);
  • výpis pamäte jadra;
  • Úplný výpis pamäte (výpis dostupnej časti fyzickej pamäte systému).

Všetky výpisy z havárie možno rozdeliť do dvoch hlavných kategórií:

  • Zlyhanie vypíše informácie o vyvolanej výnimke. Zvyčajne vytvorené v automatický režim, keď sa v aplikácii / jadre vyskytne neošetrená výnimka a podľa toho je možné zavolať systémový (vstavaný) debugger. V tomto prípade sa informácie o výnimke zapíšu do výpisu, čo uľahčuje určenie typu výnimky a miesta výskytu počas následnej analýzy.
  • Crash výpisy bez informácií o výnimkách. Zvyčajne vytvára používateľ manuálne, keď je potrebné vytvoriť len snímku procesu pre neskoršiu analýzu. Táto analýza neznamená určenie typu výnimky, keďže žiadna výnimka nenastala, ale analýzu úplne iného druhu, napríklad štúdium procesných dátových štruktúr a podobne.

Konfigurácia výpisu jadra

Musíte byť prihlásený ako správca účtu vykonať kroky v tejto časti.

Poďme rovno do konfigurácie nastavení výpisu pri zlyhaní systému Windows. Najprv musíme prejsť do okna vlastností systému jedným z nasledujúcich spôsobov:

  1. Kliknite kliknite pravým tlačidlom myši myšou na ikonu "Tento počítač" - "Vlastnosti" - "Rozšírené nastavenia systému" - "Rozšírené".
  2. Tlačidlo "Štart" - "Ovládací panel" - "Systém" - "Rozšírené nastavenia systému" - "Rozšírené".
  3. Klávesová skratka "Windows" + "Pauza" - "Rozšírené nastavenia systému" - "Rozšírené".

  4. controlsystem.cpl,3
  5. Spustite v príkazovom riadku (cmd):
    SystemPropertiesAdvanced

Výsledkom opísaných akcií je otvorenie okna „Vlastnosti systému“ a výber karty „Rozšírené“:

Potom v časti „Sťahovanie a obnovenie“ klikneme, vyberieme „Možnosti“ a otvoríme nové okno s názvom „Sťahovanie a obnovenie“:

Všetky nastavenia výpisu pri zlyhaní sú zoskupené v bloku nastavení s názvom Zlyhanie systému. V tomto bloku môžeme nastaviť nasledujúce parametre:

  1. Zapisujte udalosti do systémového denníka.
  2. Vykonajte automatický reštart.
  3. Zaznamenávanie informácií o ladení.
  4. Dump súbor.
  5. Nahradiť existujúci súbor výpisu.

Ako vidíte, mnohé parametre zo zoznamu sú celkom triviálne a ľahko pochopiteľné. Chcel by som sa však podrobnejšie venovať parametru "Dump file". Parameter je prezentovaný ako rozbaľovací zoznam a má štyri možné hodnoty:

Malý výpis pamäte

Malý výpis pamäte (minidump) je súbor, ktorý obsahuje najmenšie množstvo informácií o zlyhaní. Najmenší zo všetkých možných výpisov pamäte. Napriek zjavným nevýhodám sú to často minidumpy, ktoré sa používajú ako informácie o poruche na prenos k dodávateľovi ovládačov tretej strany na ďalšie štúdium.
zlúčenina:

  • Chybná správa.
  • Chybová hodnota.
  • Možnosti chýb.
  • Kontext procesora (PRCB), ktorý zlyhal.
  • Informácie o procese a kontext jadra (EPROCESS) pre proces spôsobujúci zlyhanie so všetkými jeho vláknami.
  • Informácie o procese a kontext jadra (ETHREAD) pre vlákno, ktoré spôsobilo zlyhanie.
  • Zásobník režimu jadra pre vlákno, ktoré spôsobilo zlyhanie.
  • Zoznam načítaných ovládačov.

Ubytovanie: %SystemRoot%\Minidump\MMDDYY-XXXXX-NN.dmp. Kde MMDDYY - mesiac, deň a rok, NN - sériové číslo skládka.
Objem: Veľkosť závisí od bitovej rýchlosti operačného systému: v stránkovacom súbore (alebo v súbore špecifikovanom v DedicatedDumpFile) je potrebných iba 128 kilobajtov pre 32-bitový OS a 256 kilobajtov pre 64-bitový OS. Keďže nemôžeme nastaviť takú malú veľkosť, zaokrúhlime ju na 1 megabajt.

Výpis pamäte jadra

Tento typ výpisu obsahuje kópiu celej pamäte jadra v čase zlyhania.
zlúčenina:

  • Zoznam spustených procesov.
  • Stav aktuálneho vlákna.
  • Pamäťové stránky v režime jadra prítomné vo fyzickej pamäti v čase zlyhania: pamäť ovládača v režime jadra a pamäť programu v režime jadra.
  • Pamäť HAL (Hardware-Aware Layer).
  • Zoznam načítaných ovládačov.

Vo výpise pamäte jadra chýbajú stránky nepridelenej pamäte a stránky používateľského režimu. Súhlasím, je nepravdepodobné, že by nás stránky procesu používateľského režimu mohli zaujímať počas zlyhania systému (BugCheck), pretože zlyhanie systému zvyčajne iniciuje kód režimu jadra.

Veľkosť: Líši sa v závislosti od veľkosti adresného priestoru jadra, pridelenia operačného systému a počtu ovládačov režimu jadra. Zvyčajne sa vyžaduje asi tretina veľkosti fyzickej pamäte vo odkladacom súbore (alebo súbore špecifikovanom pomocou DedicatedDumpFile). Sa môže líšiť.

Úplný výpis pamäte

Úplný výpis pamäte obsahuje kópiu všetkej fyzickej pamäte (RAM) v čase zlyhania. Podľa toho sa do súboru dostane aj celý obsah systémovej pamäte. To je výhoda aj hlavná nevýhoda, pretože na niektorých serveroch s veľkým množstvom pamäte RAM môže byť jej veľkosť významná.
zlúčenina:

  • Všetky stránky „viditeľnej“ fyzickej pamäte. Ide prakticky o celú pamäť systému, s výnimkou oblastí využívaných hardvérom: BIOS, PCI priestor atď.
  • Spracujte údaje, ktoré boli spustené v systéme v čase zlyhania.
  • Stránky fyzickej pamäte, ktoré nie sú namapované na virtuálny adresný priestor, ale ktoré môžu pomôcť pri vyšetrovaní príčiny zlyhania.

Úplný výpis pamäte štandardne nezahŕňa oblasti fyzickej pamäte používanej systémom BIOS.
Umiestnenie: %SystemRoot%\MEMORY.DMP . Predchádzajúci výpis je prepísaný.
Veľkosť: Stránkovací súbor (alebo súbor špecifikovaný v DedicatedDumpFile) vyžaduje veľkosť rovnajúcu sa veľkosti fyzickej pamäte + 257 megabajtov (týchto 257 MB je rozdelených na nejaký druh hlavičky + údaje ovládača). V niektorých operačných systémoch môže byť spodný prah stránkovacieho súboru nastavený presne na hodnotu veľkosti fyzickej pamäte.

Automatický výpis pamäte

Počnúc od Windows 8/ Windows Server 2012 bol do systému zavedený nový typ výpisu s názvom „Automatic Memory Dump“, ktorý je nastavený ako predvolený typ. V tomto prípade sa systém sám rozhodne, ktorý výpis pamäte zapíše v situácii konkrétneho zlyhania. Okrem toho logika výberu závisí od mnohých kritérií vrátane frekvencie „pádu“ operačného systému.

Po zmene konfigurácie výpisu pamäte systému Windows možno budete musieť reštartovať počítač.

Nastavenia registra

Kľúč databázy Registry, ktorý definuje nastavenia výpisu pri zlyhaní:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

Možnosti:

Parameter Typ Popis
autoreboot REG_DWORD Povoliť / zakázať automatický reštart, keď sa vyskytne BSOD.
CrashDumpEnabled REG_DWORD Typ vytváraného výpisu.
  • 0 - nevytvárať výpis pamäte;
  • 1 - úplný výpis pamäte;
  • 2 - výpis z pamäte jadra;
  • 3 - malý výpis pamäte;
DumpFile REG_EXPAND_SZ Cesta a názov jadrového výpisu a úplného výpisu.
DumpFilters REG_MULTI_SZ Filter ovládačov v zásobníku ovládačov výpisu pamäte. Umožňuje vám pridať nové funkcie vo fáze vytvárania výpisov pri zlyhaní. Napríklad šifrovanie obsahu výpisu. Zmena hodnoty sa neodporúča.
protokolovať udalosť REG_DWORD Zapíšte udalosť do systémového denníka.
MinidumpDir REG_EZPAND_SZ Cesta a názov malého výpisu pamäte.
MinidumpsCount REG_DWORD Maximálny počet malých výpisov pamäte. Pri prekročení sa staršie verzie začnú prepisovať.
Prepísať REG_DWORD Nahradiť existujúci súbor výpisu. Iba pre výpis pamäte jadra a úplný výpis pamäte.
IgnorePagefileSize REG_DWORD Ignoruje štandardný stránkovací súbor ako miesto na dočasné (prechodné) uloženie výpisu pamäte. Označuje, že výpis pamäte by sa mal zapísať do samostatného súboru. Používa sa v spojení s možnosťou DedicatedDumpFile.
DedicatedDumpFile REG_EZPAND_SZ Cesta a názov dočasnosti alternatívny súbor zapísať výpis pamäte. V druhom prechode sa údaje stále presunú do DumpFile/MinidumpDir.

Manuálne vytvorenie výpisu pamäte

Vyššie sme popísali nastavenia pre automatické vytváranie systém vypíše výpisy v prípade kritickej chyby, tj neošetrenej výnimky v kóde jadra. Ale v reálnom živote, okrem zlyhania operačného systému, existujú situácie, keď potrebujete získať výpis systémovej pamäte v konkrétnom čase. Ako byť v tomto prípade? Existujú spôsoby, ako získať okamžitú kópiu všetkej fyzickej pamäte, napríklad pomocou príkazu .dump v ladiacich nástrojoch WinDbg/LiveKD. LiveKD je program, ktorý vám umožňuje spustiť ladiaci program jadra Kd na spustenom systéme v lokálnom režime. Podobnú funkciu má aj ladiaci program WinDbg. Priebežná metóda získania výpisu však nie je presná, keďže vytvorenie výpisu je v tomto prípade „nekonzistentné“, pretože vytvorenie výpisu si vyžaduje čas a v prípade použitia ladiaceho nástroja v režime jadra , systém pokračuje v práci a vykonáva zmeny na stránkach pamäte.

V čase kritického zlyhania operačný systém Windows prestane fungovať a zobrazí sa modrá obrazovka smrti (BSOD). Obsah Náhodný vstup do pamäťe a všetky informácie o chybe, ktorá sa vyskytla, sa zapíšu do stránkovacieho súboru. Pri ďalšom Spustenie systému Windows vytvorí sa výpis zlyhaní s informáciami o ladení na základe uložených údajov. V protokole systémových udalostí sa vytvorí záznam závažnej chyby.

Pozor! Výpis pri zlyhaní sa nevygeneruje, ak diskový subsystém zlyhal, resp kritická chyba vznikol v počiatočnej fáze načítania systému Windows.

Typy výpisov pri zlyhaní systému Windows

Na príklade súčasnej prevádzky systémy Windows 10 (Windows Server 2016) pozrime sa na hlavné typy výpisov pamäte, ktoré môže systém vytvoriť:

  • Mini výpis pamäte (malý výpis pamäte)(256 kB). Tento typ súboru obsahuje minimálne množstvo informácií. Obsahuje iba chybové hlásenie BSOD, informácie o ovládačoch, procesoch, ktoré boli aktívne v čase zlyhania a ktorý proces alebo vlákno jadra spôsobilo zlyhanie.
  • Výpis pamäte jadra. Typicky malá, jedna tretina množstva fyzickej pamäte. Výpis pamäte jadra je podrobnejší ako minidump. Obsahuje informácie o ovládačoch a programoch v režime jadra, vrátane pridelenej pamäte jadro systému Windows a hardvérovú abstraktnú vrstvu (HAL), ako aj pamäť pridelenú ovládačom a iným programom v režime jadra.
  • Úplný výpis pamäte. Najväčšia veľkosť a vyžaduje pamäť rovnajúcu sa RAM vášho systému plus 1 MB, ktorú vyžaduje systém Windows na vytvorenie tohto súboru.
  • Automatický výpis pamäte. Pokiaľ ide o informácie, zodpovedá výpisu pamäte jadra. Líši sa len tým, koľko miesta využíva na vytvorenie súboru výpisu. Tento typ súboru v systéme Windows 7 neexistoval. Bol pridaný v systéme Windows 8.
  • Aktívny výpis pamäte. Tento typ odfiltruje prvky, ktoré nedokážu určiť príčinu zlyhania systému. Toto bolo pridané do systému Windows 10 a je obzvlášť užitočné, ak používate virtuálny prístroj alebo ak je váš systém hostiteľom Hyper-V.

Ako povoliť generovanie výpisu pamäte v systéme Windows?

Pomocou Win + Pause otvorte okno nastavení systému, vyberte " Ďalšie systémové nastavenia" (Rozšírené nastavenia systému). Na karte " Okrem toho" (Rozšírené), sekcia "" (Spustenie a obnovenie), kliknite na tlačidlo " možnosti" (Nastavenie). V okne, ktoré sa otvorí, nakonfigurujte akcie v prípade zlyhania systému. Začiarknite políčko " Zapisujte udalosti do systémového denníka» (Zapíšte udalosť do systémového denníka), vyberte typ výpisu, ktorý sa má vygenerovať pri zlyhaní systému. Ak je v začiarkavacom políčku " Nahradiť existujúci súbor výpisu» (Prepísať akýkoľvek existujúci súbor) začiarknite políčko, súbor sa prepíše pri každom páde. Je lepšie zrušiť začiarknutie tohto políčka, potom budete mať viac informácií na analýzu. Zakázať aj automatický reštart systému (Automaticky reštartovať).

Vo väčšine prípadov bude na analýzu príčiny BSOD stačiť malý výpis pamäte.

Teraz, ak sa vyskytne BSOD, môžete analyzovať súbor výpisu a nájsť príčinu porúch. Minidump je štandardne uložený v priečinku %systemroot%\minidump. Na analýzu súboru výpisu odporúčam použiť program WinDBG(Microsoft Kernel Debugger).

Inštalácia WinDBG na Windows

Utility WinDBG zahrnuté v " Windows 10 SDK» (Windows 10 SDK). .

Súbor sa volá winsdksetup.exe, veľkosť 1,3 MB.

Spustite inštaláciu a vyberte, či chcete balík nainštalovať na tento počítač alebo si ho stiahnuť na inštaláciu na iné počítače. Nainštalujte balík na lokálny počítač.

Môžete nainštalovať celý balík, ale na inštaláciu iba nástroja na ladenie vyberte Ladenie Nástroje pre Windows.

Po nainštalovaní nájdete skratky WinDBG v ponuke Štart.

Nastavenie asociácie súborov .dmp s WinDBG

Ak chcete otvoriť súbory výpisu jednoduchým kliknutím, namapujte príponu .dmp na pomôcku WinDBG.

  1. OTVORENÉ príkazový riadok ako správca a spustite príkazy pre 64-bitový systém: cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    windbg.exe –IA
    pre 32-bitový systém:
    C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
    windbg.exe –IA
  2. V dôsledku toho budú typy súborov: .DMP, .HDMP, .MDMP, .KDMP, .WEW mapované na WinDBG.

Nastavenie servera symbolov ladenia vo WinDBG

Symboly ladenia (symboly ladenia alebo súbory symbolov) sú dátové bloky generované v procese kompilácie programu spolu so spustiteľným súborom. Takéto dátové bloky obsahujú informácie o názvoch premenných, nazývaných funkciách, knižniciach atď. Tieto údaje nie sú potrebné pri spustení programu, ale užitočné pri jeho ladení. Komponenty spoločnosti Microsoft sú zostavené so symbolmi distribuovanými prostredníctvom servera Microsoft Symbol Server.

Nastavte WinDBG na používanie Microsoft Symbol Server:

  • Otvorte WinDBG;
  • Prejdite do ponuky súbor –> Cesta k súboru symbolov;
  • Napíšte reťazec obsahujúci adresu URL na stiahnutie symbolov ladenia z webovej lokality spoločnosti Microsoft a priečinok na uloženie vyrovnávacej pamäte: SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols V príklade sa stiahne vyrovnávacia pamäť do priečinka E:\Sym_WinDBG, môžete zadať ľubovoľné.
  • Nezabudnite uložiť zmeny v ponuke súbor–>Uložiť pracovný priestor;

WinDBG vyhľadá symboly v lokálnom priečinku a ak v ňom nenájde potrebné symboly, automaticky stiahne symboly zo zadanej stránky. Ak chcete pridať svoj vlastný priečinok so symbolmi, môžete to urobiť takto:

SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols;c:\Symbols

Ak nie je k dispozícii internetové pripojenie, najskôr si stiahnite balík symbolov zo zdroja balíkov symbolov systému Windows.

Analýza výpisu zrútenia vo WinDBG

Ladiaci program WinDBG otvorí súbor výpisu a stiahne potrebné symboly na ladenie z lokálneho priečinka alebo z internetu. Počas tohto procesu nemôžete používať WinDBG. V spodnej časti okna (v príkazovom riadku ladiaceho programu) sa zobrazí nápis Debugee nie je pripojený.

Príkazy sa zadávajú do príkazového riadku v spodnej časti okna.

Najdôležitejšou vecou, ​​​​ktorú treba venovať pozornosť, je kód chyby, ktorý je vždy uvedený v hexadecimálnu hodnotu a vyzerá ako 0xXXXXXXXXX(uvedené v jednej z možností - STOP:, 7.2.2019 0008F, 0x8F). V našom príklade je kód chyby 0x139.

Ladiaci nástroj vás vyzve na vykonanie príkazu!analyza -v, stačí umiestniť kurzor myši na odkaz a kliknúť. Na čo slúži tento príkaz?

  • Vykonáva predbežnú analýzu výpisu pamäte a poskytuje detailné informácie na spustenie analýzy.
  • Tento príkaz zobrazí kód STOP a symbolický názov chyby.
  • Zobrazuje zásobník volaní príkazov, ktoré viedli k zlyhaniu.
  • Okrem toho sa tu zobrazujú chyby IP adresy, procesov a registrov.
  • Tím môže poskytnúť hotové odporúčania na riešenie problému.

Hlavné body, ktorým by ste mali venovať pozornosť pri analýze po vykonaní príkazu !analyze -v (výpis nie je úplný).

1: kd> !analyzovať -v


* *
*Analýza kontroly chýb*
* *
*****************************************************************************
Symbolický názov chyby STOP (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
Popis chyby (Komponent jadra poškodil kritickú dátovú štruktúru. Toto poškodenie môže potenciálne umožniť útočníkovi prevziať kontrolu nad týmto počítačom):

Komponent jadra poškodil kritickú dátovú štruktúru. Poškodenie by mohlo potenciálne umožniť používateľovi so zlými úmyslami získať kontrolu nad týmto počítačom.
Argumenty chyby:

Argumenty:
Arg1: 0000000000000003, položka LIST_ENTRY bola poškodená (t. j. dvojité odstránenie).
Arg2: ffffd0003a20d5d0, adresa rámca pasce pre výnimku, ktorá spôsobila kontrolu chýb
Arg3: ffffd0003a20d528, adresa záznamu výnimky pre výnimku, ktorá spôsobila kontrolu chýb
Arg4: 0000000000000000, rezervované
Podrobnosti ladenia:
------------------

Počítadlo ukazuje, koľkokrát systém zlyhal s podobnou chybou:

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

Kód chyby STOP v skrátenom formáte:

BUGCHECK_STR: 0x139

Proces, ktorý zlyhal (nie nevyhnutne príčinou chyby, len tento proces bežal v pamäti v čase zlyhania):

PROCESS_NAME: sqlservr.exe

Dešifrovanie kódu chyby: Systém v tejto aplikácii zistil pretečenie vyrovnávacej pamäte zásobníka, čo môže útočníkovi umožniť prevziať kontrolu nad touto aplikáciou.

ERROR_CODE: (NTSTATUS) 0xc0000409 - Systém v tejto aplikácii zistil prekročenie vyrovnávacej pamäte založenej na zásobníku. Toto prekročenie by mohlo potenciálne umožniť používateľovi so zlými úmyslami získať kontrolu nad touto aplikáciou.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - Systém v tejto aplikácii zistil prekročenie vyrovnávacej pamäte založenej na zásobníku. Toto prekročenie by mohlo potenciálne umožniť používateľovi so zlými úmyslami získať kontrolu nad touto aplikáciou.

Posledný call na stacku:

LAST_CONTROL_TRANSFER: z ffff8040117d6a9 na ffff8040116b0a0

Zásobník hovorov v čase zlyhania:

STACK_TEXT:
ffffd000`3a20d2a8 fffff804`0117d6a9: 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`8e:nta20d005CheckK3a20d
ffffd000`3a20d2b0 fffff804`0117da50: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2Ki6BugCheck nt!
ffffd000`3a20d3f0 ffffff804`0117c150: 00000000`00000000 00000000`00000000 00000000 00000000`00000000`00000000`00000000 00000000 0000000000
ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`000xF3KiR9:Chaeck3006KiR9
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951 ?? ::FNODOBFM::`string"+0x17252
ffffd000`3a20d8c0 ffff804`013a34ac: 00000000`00000004 00000000`00000000
ffffd000`3a20d990 ffffff804`0117d313: ffffffff`fffffffe 00000000`00000000 00000000`00000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Fieb ​​Fieb`a0xf14t
ffffd000`3a20da90 00007ffb`475307da: 00000000`00000000 00000000`00000000 00000000 00000000`00000000`00000000`00000000 00000000 00000000 pynt3000000000000000 0
000000ee'f25ed2b8 00000000'00000000: 00000000'00000000 00000000'00000000 00000000 00000000 00000000

Časť kódu, kde sa vyskytla chyba:

FOLLOWUP_IP:
nt!KiFastFailDispatch+d0
fffff804`0117da50 c644242000 mov byte ptr ,0
FAULT_INSTR_CODE: 202444c6
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: nt!KiFastFailDispatch+d0
FOLLOWUP_NAME: Vlastník stroja

Názov modulu v tabuľke objektov jadra. Ak sa analyzátoru podarilo zistiť problematický ovládač, názov sa zobrazí v poliach MODULE_NAME a IMAGE_NAME:

MODULE_NAME: nt
IMAGE_NAME: ntkrnlmp.exe

1: kd > lmvm nt
Prezrite si úplný zoznam modulov
Načítaný súbor obrázka symbolu: ntkrnlmp.exe
Súbor obrázka namapovanej pamäte: C:\ProgramData\dbg\sym\ntoskrnl.exe\5A9A2147787000\ntoskrnl.exe
Cesta k obrázku: ntkrnlmp.exe
Názov obrázku: ntkrnlmp.exe
Interný názov: ntkrnlmp.exe
Pôvodný názov súboru: ntkrnlmp.exe
Verzia produktu: 6.3.9600.18946
FileVersion: 6.3.9600.18946 (winblue_ltsb_escrow.180302-1800)

Vo vyššie uvedenom príklade analýza poukázala na súbor jadra ntkrnlmp.exe. Keď analýza výpisu pamäte ukazuje na systémový ovládač (napríklad win32k.sys) alebo súbor jadra (napríklad ntkrnlmp.exe v našom príklade), je to s najväčšou pravdepodobnosťou daný súbor nie je príčinou problému. Veľmi často sa ukazuje, že problém spočíva v ovládači zariadenia, nastavenia systému BIOS alebo porucha zariadenia.

Ak zistíte, že BSOD je spôsobený ovládačom tretej strany, jeho názov bude uvedený v hodnotách MODULE_NAME a IMAGE_NAME.

Napríklad:

Cesta k obrázku: \SystemRoot\system32\drivers\cmudaxp.sys
Názov obrázku: cmudaxp.sys

Otvorte vlastnosti súboru ovládača a skontrolujte jeho verziu. Vo väčšine prípadov je problém s ovládačmi vyriešený ich aktualizáciou.