• Jak použít výpis paměti k určení ovladače způsobujícího BSOD. Výpis paměti při selhání systému Windows do souboru cpp systému Windows 10

    Tato krátká poznámka má za cíl ukázat, jak můžete nakonfigurovat systém, abyste byli k dispozici v případě nouze Výpis paměti Windows, tedy výpis, který lze vytvořit v případě kritického selhání, charakterizovaného zobrazením modré obrazovky smrti (BSOD). Co je to skládka obecně, proč ji potřebujeme a co to je, jaké problémy má řešit a jaké informace obsahuje?

    Výpis paměti (memory dump) - obsah pracovní paměti procesu, jádra nebo celého operačního systému, včetně kromě pracovních oblastí i doplňkových informací o stavu registrů procesoru, obsahu zásobníku a dalších struktur služeb.

    Proč potřebujeme tento obsah, tzn. Výpis paměti Windows? Snad nejběžnější výpis paměti se používá ke zkoumání příčin zhroucení systému (), které způsobilo úplné zastavení operačního systému. Kromě toho lze stav paměti využít pro jiné účely. Důležitý je také fakt, že výpis paměti je doslova jediným způsobem, jak získat informace o případném selhání! A odstranění (přijetí) výpisu systémové paměti je ve skutečnosti jedinou přesnou metodou, jak získat okamžitý tisk (kopii) obsahu fyzické paměti systému.

    Čím přesněji bude obsah výpisu odrážet stav paměti v době poruchy, tím lépe budeme schopni analyzovat nouzovou situaci. Proto je nesmírně důležité získat přesně aktuální kopii fyzické paměti systému v přesně definovaném okamžiku bezprostředně předcházejícím selhání. A jediný způsob, jak toho dosáhnout, je vytvořit úplný výpis z havárie. Důvod je zcela triviální - když dojde k vyprázdnění paměti při havárii, ať už v důsledku selhání nebo v důsledku uměle simulované situace, systém je v tuto chvíli přijímání řízení nouzových funkcí (KeBugCheckEx) v absolutně nezměněném (statickém) stavu, takže mezi okamžikem havárie a okamžikem zápisu dat na médium se nic nemění a obsah původní fyzické paměti se nezapíše. To je teoreticky, ale občas v životě, ale jsou situace, že kvůli vadným hardwarovým komponentám může dojít k poškození samotného výpisu paměti nebo k zamrznutí stanice během procesu záznamu výpisu.

    V drtivé většině případů od okamžiku, kdy začne proces vytváření výpisu při havárii paměti, až do okamžiku zapsání obsahu paměti na disk, zůstávají informace v paměti nezměněny.

    Teoreticky je statická (neměnná) paměťová stopa vysvětlena skutečností, že při volání funkce KeBugCheckEx, která zobrazí informace o havárii a spustí proces vytváření výpisu paměti, je systém již zcela zastaven a obsah fyzické paměti je zapsán do bloků obsazených stránkovacím souborem na disku, načež je již při následném spouštění operačního systému uložen na systémový soubor na médium. No, skoro jednou jsem pozoroval situaci, kdy selhaná základní deska neumožnila uložit výpis paměti: a) zamrznutí během činnosti logiky ukládání výpisu (proces nedosáhl 100%), b) poškození souboru výpisu paměti (ladicí program proklínal struktury), c) zápis souborů s výpisem paměti.dmp o nulové délce. Proto, přestože byl systém v době vytvoření výpisu paměti již zcela zastaven a funguje pouze nouzový kód, může vadný hardware provádět vlastní úpravy libovolné logiky bez výjimky v jakékoli fázi provozu.
    Tradičně se v počáteční fázi k uložení výpisu paměti Windows používají bloky disku přidělené stránkovacímu souboru (stránkovacímu souboru). Poté, co se objeví modrá obrazovka a dojde k restartování, jsou data přesunuta do samostatného souboru a poté je soubor přejmenován podle vzoru v závislosti na typu výpisu. Počínaje Windows Vista však lze tento stav změnit, nyní má uživatel možnost uložit vyhrazený výpis bez účasti stránkovacího souboru a umístit informace o havárii do dočasného souboru. Bylo to provedeno za účelem eliminace konfiguračních chyb spojených s nesprávným nastavením velikosti a pozice stránkovacího souboru, což často vedlo k problémům v procesu ukládání výpisu paměti.
    Podívejme se, jaké typy výpisů paměti nám operační systém Windows umožňuje vytvářet:

    • Výpis paměti procesu (aplikace);
    • výpis paměti jádra;
    • Úplný výpis paměti (výpis dostupné části fyzické paměti systému).

    Všechny výpisy při selhání lze rozdělit do dvou hlavních kategorií:

    • Selhání vypíše výpis informací o vyvolané výjimce. Obvykle se vytvářejí automaticky, když se v aplikaci/jádru vyskytne neošetřená výjimka, a podle toho lze zavolat systémový (vestavěný) debugger. V tomto případě jsou informace o výjimce zapsány do výpisu, což usnadňuje určení typu výjimky a umístění výskytu během následné analýzy.
    • Chybové výpisy bez informací o výjimce. Obvykle je vytváří uživatel ručně, když je potřeba vytvořit pouze snímek procesu pro pozdější analýzu. Tato analýza neznamená určení typu výjimky, protože k žádné výjimce nedošlo, ale analýzu zcela jiného druhu, například studium procesních datových struktur a podobně.

    Konfigurace výpisu jádra

    Chcete-li provést kroky popsané v této části, musíte být přihlášeni pomocí účtu správce.

    Pojďme rovnou do konfigurace nastavení výpisu při selhání systému Windows. Nejprve musíme jedním z následujících způsobů přejít do okna vlastností systému:

    1. Klikněte pravým tlačítkem myši na ikonu "Tento počítač" - "Vlastnosti" - "Pokročilá nastavení systému" - "Upřesnit".
    2. Tlačítko "Start" - "Ovládací panely" - "Systém" - "Pokročilá nastavení systému" - "Pokročilé".
    3. Klávesová zkratka "Windows" + "Pauza" - "Pokročilá nastavení systému" - "Upřesnit".

    4. controlsystem.cpl,3
    5. Spustit v příkazovém řádku (cmd):
      SystemPropertiesAdvanced

    Výsledkem popsaných akcí je otevření okna „Vlastnosti systému“ a výběr karty „Upřesnit“:

    Poté v části „Stažení a obnovení“ klikneme, vybereme „Možnosti“ a tím otevřeme nové okno s názvem „Stažení a obnovení“:

    Všechna nastavení výpisu zhroucení jsou seskupena v bloku nastavení nazvaném System Failure. V tomto bloku můžeme nastavit následující parametry:

    1. Zapisujte události do systémového protokolu.
    2. Proveďte automatický restart.
    3. Záznam informací o ladění.
    4. Dump soubor.
    5. Nahradit existující soubor výpisu.

    Jak vidíte, mnoho parametrů ze seznamu je docela triviálních a snadno pochopitelných. U parametru "Soubor výpisu" bych se však rád zastavil podrobněji. Parametr je zobrazen jako rozevírací seznam a má čtyři možné hodnoty:

    Malý výpis paměti

    Malý výpis paměti (minidump) je soubor, který obsahuje nejmenší množství informací o selhání. Nejmenší ze všech možných výpisů paměti. Navzdory zjevným nevýhodám jsou to často minidumpy, které se používají jako informace o selhání pro přenos k jinému dodavateli ovladačů k dalšímu studiu.
    Sloučenina:

    • Chybové hlášení.
    • Chybová hodnota.
    • Možnosti chyby.
    • Kontext procesoru (PRCB), který selhal.
    • Informace o procesu a kontext jádra (EPROCESS) pro proces způsobující selhání, se všemi jeho vlákny.
    • Informace o procesu a kontext jádra (ETHREAD) pro vlákno, které způsobilo selhání.
    • Zásobník režimu jádra pro vlákno, které způsobilo selhání.
    • Seznam načtených ovladačů.

    Ubytování: %SystemRoot%\Minidump\MMDDYY-XXXXX-NN.dmp. Kde MMDDYY je měsíc, den a rok, NN je sériové číslo výpisu.
    Objem: Velikost závisí na bitové verzi operačního systému: ve stránkovacím souboru (nebo v souboru specifikovaném v DedicatedDumpFile) je vyžadováno pouze 128 kilobajtů pro 32bitový OS a 256 kilobajtů pro 64bitový OS. Protože nemůžeme nastavit tak malou velikost, zaokrouhlíme ji na 1 megabajt.

    Výpis paměti jádra

    Tento typ výpisu obsahuje kopii veškeré paměti jádra v době havárie.
    Sloučenina:

    • Seznam běžících procesů.
    • Stav aktuálního vlákna.
    • Paměťové stránky v režimu jádra přítomné ve fyzické paměti v době havárie: paměť ovladače v režimu jádra a programová paměť v režimu jádra.
    • Paměť HAL (Hardware-Aware Layer).
    • Seznam načtených ovladačů.

    Výpis paměti jádra postrádá stránky nepřidělené paměti a stránky uživatelského režimu. Souhlasíte, je nepravděpodobné, že by nás stránky procesu uživatelského režimu mohly zajímat během havárie systému (BugCheck), protože zhroucení systému je obvykle iniciováno kódem režimu jádra.

    Velikost: Liší se v závislosti na velikosti adresního prostoru jádra, přidělení operačního systému a počtu ovladačů režimu jádra. Obvykle je vyžadována asi třetina množství fyzické paměti v odkládacím souboru (nebo souboru určeném DedicatedDumpFile). Se může lišit.

    Kompletní výpis paměti

    Úplný výpis paměti obsahuje kopii veškeré fyzické paměti (RAM) v době havárie. Podle toho se do souboru dostane i celý obsah systémové paměti. To je výhoda i hlavní nevýhoda, protože její velikost může být na některých serverech s velkým množstvím paměti RAM významná.
    Sloučenina:

    • Všechny stránky "viditelné" fyzické paměti. Jedná se prakticky o celou paměť systému s výjimkou oblastí využívaných hardwarem: BIOS, PCI prostor atd.
    • Zpracujte data, která běžela v systému v době havárie.
    • Stránky fyzické paměti, které nejsou mapovány do virtuálního adresového prostoru, ale které mohou pomoci při vyšetřování příčiny selhání.

    Úplný výpis paměti ve výchozím nastavení nezahrnuje oblasti fyzické paměti používané systémem BIOS.
    Umístění: %SystemRoot%\MEMORY.DMP . Předchozí výpis je přepsán.
    Velikost: Stránkovací soubor (nebo soubor specifikovaný v DedicatedDumpFile) vyžaduje velikost rovnou velikosti fyzické paměti + 257 megabajtů (těchto 257 MB je rozděleno na nějaký druh záhlaví + data ovladače). Ve skutečnosti lze v některých operačních systémech spodní práh stránkovacího souboru nastavit přesně na hodnotu velikosti fyzické paměti.

    Automatický výpis paměti

    Počínaje Windows 8/Windows Server 2012 byl do systému zaveden nový typ výpisu s názvem „Automatic Memory Dump“, který je nastaven jako výchozí typ. V tomto případě se systém sám rozhodne, který výpis paměti zapíše v situaci konkrétního selhání. Navíc logika výběru závisí na mnoha kritériích, včetně frekvence „pádu“ operačního systému.

    Po změně konfigurace výpisu paměti systému Windows může být nutné restartovat počítač.

    Nastavení registru

    Klíč registru, který definuje nastavení výpisu při selhání:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

    Možnosti:

    Parametr Typ Popis
    autoreboot REG_DWORD Povolit / zakázat automatický restart, když dojde k BSOD.
    CrashDumpEnabled REG_DWORD Typ vytvářeného výpisu.
    • 0 - nevytvářet výpis paměti;
    • 1 - kompletní výpis paměti;
    • 2 - výpis paměti jádra;
    • 3 - malý výpis paměti;
    DumpFile REG_EXPAND_SZ Cesta a název hlavního výpisu a úplného výpisu.
    DumpFilters REG_MULTI_SZ Filtr ovladačů v zásobníku ovladačů výpisu paměti. Umožňuje přidat nové funkce ve fázi vytváření výpisů při selhání. Například šifrování obsahu výpisu. Změna hodnoty se nedoporučuje.
    log událost REG_DWORD Zapište událost do systémového protokolu.
    MinidumpDir REG_EZPAND_SZ Cesta a název malého výpisu paměti.
    MinidumpsCount REG_DWORD Maximální počet malých výpisů paměti. Při překročení se začnou přepisovat starší verze.
    Přepsat REG_DWORD Nahradit existující soubor výpisu. Pouze pro výpis paměti jádra a úplný výpis paměti.
    IgnorovatPagefileSize REG_DWORD Ignoruje standardní stránkovací soubor jako místo pro dočasné (přechodné) uložení výpisu paměti. Označuje, že výpis paměti by měl být zapsán do samostatného souboru. Používá se ve spojení s možností DedicatedDumpFile.
    DedicatedDumpFile REG_EZPAND_SZ Cesta a název dočasného alternativního souboru pro zápis výpisu paměti. Ve druhém průchodu budou data stále přesunuta do DumpFile/MinidumpDir.

    Ruční vytvoření výpisu paměti

    Výše jsme popsali nastavení pro automatické vytváření výpisů zhroucení systému v případě kritické chyby, tedy neošetřené výjimky v kódu jádra. Ale v reálném životě, kromě pádu operačního systému, existují situace, kdy potřebujete získat výpis systémové paměti v konkrétním okamžiku. Jak být v tomto případě? Existují způsoby, jak získat okamžitou kopii veškeré fyzické paměti, například pomocí příkazu .dump v ladicích programech WinDbg/LiveKD. LiveKD je program, který vám umožňuje spouštět ladicí program jádra Kd na běžícím systému v místním režimu. Debugger WinDbg má také podobnou funkci. Průběžná metoda získávání výpisu však není přesná, protože vytvořený výpis je v tomto případě „nekonzistentní“, protože vytvoření výpisu chvíli trvá a v případě použití ladicího programu v režimu jádra systém pokračuje v práci a provádí změny na stránkách paměti.

    V době kritického selhání přestane operační systém Windows fungovat a zobrazí se modrá obrazovka smrti (BSOD). Do stránkovacího souboru se zapíše obsah paměti RAM a všechny informace o chybě, ke které došlo. Při příštím spuštění systému Windows se vytvoří výpis zhroucení s informacemi o ladění na základě uložených dat. V protokolu systémových událostí se vytvoří záznam závažné chyby.

    Pozornost! Výpis zhroucení se nevytvoří, pokud diskový subsystém selhal nebo pokud během počáteční fáze spouštění systému Windows došlo ke kritické chybě.

    Typy výpisů při selhání systému Windows

    Na příkladu aktuálního operačního systému Windows 10 (Windows Server 2016) se podívejme na hlavní typy výpisů paměti, které může systém vytvořit:

    • Mini výpis paměti (malý výpis paměti)(256 kB). Tento typ souboru obsahuje minimální množství informací. Obsahuje pouze chybovou zprávu BSOD, informace o ovladačích, procesech, které byly aktivní v době havárie, a který proces nebo vlákno jádra způsobilo havárii.
    • Výpis paměti jádra. Obvykle malá, jedna třetina množství fyzické paměti. Výpis paměti jádra je podrobnější než minidump. Obsahuje informace o ovladačích a programech v režimu jádra, zahrnuje paměť přidělenou jádru Windows a hardwarové abstraktní vrstvě (HAL) a paměť přidělenou ovladačům a dalším programům v režimu jádra.
    • Kompletní výpis paměti. Největší velikost a vyžaduje paměť rovnající se paměti RAM vašeho systému plus 1 MB požadované systémem Windows k vytvoření tohoto souboru.
    • Automatický výpis paměti. Pokud jde o informace, odpovídá výpisu paměti jádra. Liší se pouze tím, kolik místa používá k vytvoření souboru výpisu. Tento typ souboru ve Windows 7 neexistoval. Byl přidán ve Windows 8.
    • Aktivní výpis paměti. Tento typ odfiltruje prvky, které nemohou určit příčinu selhání systému. To bylo přidáno do Windows 10 a je zvláště užitečné, pokud používáte virtuální počítač nebo pokud je váš systém hostitelem Hyper-V.

    Jak povolit generování výpisu paměti ve Windows?

    Pomocí Win + Pause otevřete okno nastavení systému, vyberte " Další nastavení systému" (Pokročilé systémové nastavení). Na kartě " dodatečně" (Pokročilé), sekce "" (Spuštění a obnovení), klikněte na tlačítko " Možnosti» (Nastavení). V okně, které se otevře, nakonfigurujte akce v případě selhání systému. Zaškrtněte políčko " Zapisujte události do systémového protokolu» (Zapište událost do systémového protokolu), vyberte typ výpisu, který se má vygenerovat při zhroucení systému. Pokud je v zaškrtávacím políčku " Nahradit existující soubor výpisu» zaškrtávací políčko (Přepsat jakýkoli existující soubor), soubor bude přepsán při každém selhání. Je lepší zrušit zaškrtnutí tohoto políčka, pak budete mít více informací pro analýzu. Zakázat také automatický restart systému (Automaticky restartovat).

    Ve většině případů bude k analýze příčiny BSOD stačit malý výpis paměti.

    Nyní, pokud dojde k BSOD, můžete analyzovat soubor výpisu a najít příčinu selhání. Minidump je standardně uložen ve složce %systemroot%\minidump. Pro analýzu souboru výpisu doporučuji použít program WinDBG(Microsoft Kernel Debugger).

    Instalace WinDBG na Windows

    Utility WinDBG obsažen v " Windows 10 SDK» (Windows 10 SDK). .

    Soubor se nazývá winsdksetup.exe, velikost 1,3 MB.

    Spusťte instalaci a zvolte, zda chcete balíček nainstalovat na tento počítač nebo jej stáhnout pro instalaci na jiné počítače. Nainstalujte balíček na místní počítač.

    Můžete nainstalovat celý balíček, ale pro instalaci pouze nástroje pro ladění vyberte Nástroje pro ladění pro Windows.

    Po instalaci naleznete zástupce WinDBG v nabídce Start.

    Nastavení přidružení souborů .dmp k WinDBG

    Chcete-li otevřít soubory výpisu jednoduchým kliknutím, namapujte příponu .dmp na nástroj WinDBG.

    1. Otevřete příkazový řádek jako správce a spusťte příkazy pro 64bitový systém: cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
      windbg.exe –IA
      pro 32bitový systém:
      C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
      windbg.exe –IA
    2. V důsledku toho budou typy souborů: .DMP, .HDMP, .MDMP, .KDMP, .WEW mapovány na WinDBG.

    Nastavení serveru symbolů ladění ve WinDBG

    Ladicí symboly (debug-symbols nebo symbol files) jsou datové bloky generované v procesu kompilace programu spolu se spustitelným souborem. Takové datové bloky obsahují informace o názvech proměnných, nazývaných funkcích, knihovnách atd. Tato data nejsou potřebná při spuštění programu, ale užitečná při jeho ladění. Komponenty společnosti Microsoft jsou kompilovány se symboly distribuovanými prostřednictvím serveru Microsoft Symbol Server.

    Nastavte WinDBG pro použití Microsoft Symbol Server:

    • Otevřete WinDBG;
    • Přejděte do nabídky soubor –> Cesta k souboru symbolů;
    • Napište řetězec obsahující adresu URL pro stažení ladicích symbolů z webu společnosti Microsoft a složku pro uložení mezipaměti: SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols V příkladu se mezipaměť stáhne do složky E:\Sym_WinDBG, můžete zadat libovolnou.
    • Nezapomeňte uložit změny v nabídce soubor–>Uložit pracovní prostor;

    WinDBG vyhledá symboly v místní složce a pokud v ní potřebné symboly nenajde, automaticky si stáhne symboly z určeného webu. Pokud chcete přidat vlastní složku symbolů, můžete to udělat takto:

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

    Pokud není k dispozici připojení k Internetu, stáhněte si nejprve balíček symbolů ze zdroje Windows Symbol Packages.

    Analýza výpisu zhroucení ve WinDBG

    Ladicí program WinDBG otevře soubor výpisu a stáhne potřebné symboly pro ladění z místní složky nebo z Internetu. Během tohoto procesu nelze použít WinDBG. V dolní části okna (v příkazovém řádku debuggeru) se objeví nápis Debugee není připojen.

    Příkazy se zadávají do příkazového řádku umístěného ve spodní části okna.

    Nejdůležitější věcí, které je třeba věnovat pozornost, je chybový kód, který je vždy uveden v hexadecimální hodnotě a jak vypadá 0xXXXXXXXXX(uvedeno v jedné z možností - STOP:, 07.02.2019 0008F, 0x8F). V našem příkladu je kód chyby 0x139.

    Ladicí program vás vyzve ke spuštění příkazu analyzovat -v, stačí najet myší na odkaz a kliknout. K čemu je tento příkaz?

    • Provádí předběžnou analýzu výpisu paměti a poskytuje podrobné informace pro zahájení analýzy.
    • Tento příkaz zobrazí kód STOP a symbolický název chyby.
    • Zobrazuje zásobník volání příkazů, které vedly k selhání.
    • Kromě toho se zde zobrazují chyby IP adresy, procesu a registru.
    • Tým může poskytnout hotová doporučení pro řešení problému.

    Hlavní body, kterým byste měli věnovat pozornost při analýze po provedení příkazu !analyze -v (výpis není úplný).

    1: kd> !analyzovat -v


    * *
    *Analýza kontroly chyb*
    * *
    *****************************************************************************
    Symbolický název chyby STOP (BugCheck)
    KERNEL_SECURITY_CHECK_FAILURE (139)
    Popis chyby (Komponenta jádra poškodila kritickou datovou strukturu. Toto poškození by mohlo útočníkovi umožnit převzít kontrolu nad tímto počítačem):

    Komponenta jádra poškodila kritickou datovou strukturu. Poškození by mohlo potenciálně umožnit uživateli se zlými úmysly získat kontrolu nad tímto počítačem.
    Argumenty chyby:

    Argumenty:
    Arg1: 0000000000000003, položka LIST_ENTRY byla poškozena (tj. dvojité odstranění).
    Arg2: ffffd0003a20d5d0, Adresa rámce trapu pro výjimku, která způsobila kontrolu chyb
    Arg3: ffffd0003a20d528, Adresa záznamu výjimky pro výjimku, která způsobila kontrolu chyb
    Arg4: 0000000000000000, Rezervováno
    Podrobnosti ladění:
    ------------------

    Počítadlo ukazuje, kolikrát se systém zhroutil s podobnou chybou:

    CUSTOMER_CRASH_COUNT: 1

    DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

    Kód chyby STOP ve zkráceném formátu:

    BUGCHECK_STR: 0x139

    Proces, který se zhroutil (nemusí to být nutně příčina chyby, pouze tento proces běžel v paměti v době havárie):

    PROCESS_NAME: sqlservr.exe

    Dešifrování kódu chyby: Systém v této aplikaci zjistil přetečení zásobníku, což může útočníkovi umožnit převzít kontrolu nad touto aplikací.

    ERROR_CODE: (NTSTATUS) 0xc0000409 - Systém v této aplikaci zjistil přetečení vyrovnávací paměti založené na zásobníku. Toto překročení by mohlo potenciálně umožnit uživateli se zlými úmysly získat kontrolu nad touto aplikací.
    EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - Systém v této aplikaci zjistil přetečení vyrovnávací paměti založené na zásobníku. Toto překročení by mohlo potenciálně umožnit uživateli se zlými úmysly získat kontrolu nad touto aplikací.

    Poslední call na stacku:

    LAST_CONTROL_TRANSFER: z ffff8040117d6a9 na ffff8040116b0a0

    Zásobník volání v době selhání:

    STACK_TEXT:
    ffffd000`3a20d2a8 ffff804`0117d6a9: 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`8e:nta20d
    ffffd000`3a20d2b0 fffff804`0117da50: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2BugCheck+
    ffffd000`3a20d3f0 fffff804`0117c150: 00000000`00000000 00000000`00000000 00000000 00000000`00000000`00000000`00000000 00000000 0000000000000000d 0
    ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`000x3006KiR9:0000006
    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 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:0W:
    ffffd000`3a20da90 00007ffb`475307da: 00000000`00000000 00000000`00000000 00000000 00000000`00000000`00000000`00000000`00000000`0000000 00000000 000000 pynt 0000000 00000000000000000000000
    000000ee`f25ed2b8 00000000`00000000:00000000`00000000 00000000`00000000 00000000`0000000000000000000000307 da

    Část kódu, kde došlo k chybě:

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

    Název modulu v tabulce objektů jádra. Pokud byl analyzátor schopen detekovat problematický ovladač, zobrazí se název v polích MODULE_NAME a IMAGE_NAME:

    MODULE_NAME: nt
    IMAGE_NAME: ntkrnlmp.exe

    1: kd > lmvm nt
    Procházet úplný seznam modulů
    Načtený soubor obrázku symbolu: ntkrnlmp.exe
    Soubor obrázku namapované paměti: C:\ProgramData\dbg\sym\ntoskrnl.exe\5A9A2147787000\ntoskrnl.exe
    Cesta k obrázku: ntkrnlmp.exe
    Název obrázku: ntkrnlmp.exe
    Interní název: ntkrnlmp.exe
    Původní název souboru: ntkrnlmp.exe
    Verze produktu: 6.3.9600.18946
    FileVersion: 6.3.9600.18946 (winblue_ltsb_escrow.180302-1800)

    Ve výše uvedeném příkladu analýza ukázala na soubor jádra ntkrnlmp.exe. Když analýza výpisu paměti ukazuje na systémový ovladač (například win32k.sys) nebo soubor jádra (jako v našem příkladu ntkrnlmp.exe), tento soubor s největší pravděpodobností není příčinou problému. Velmi často se ukáže, že problém spočívá v ovladači zařízení, nastavení BIOSu nebo selhání hardwaru.

    Pokud zjistíte, že BSOD je způsoben ovladačem třetí strany, jeho název bude uveden v hodnotách MODULE_NAME a IMAGE_NAME.

    Například:

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

    Otevřete vlastnosti souboru ovladače a zkontrolujte jeho verzi. Ve většině případů je problém s ovladači vyřešen jejich aktualizací.

    Pokud máte ve Windows 10 tzv. modrou obrazovku smrti a jste připraveni upadnout do nervového kómatu, seberte se a pokuste se problém vyřešit. Pro začátek stojí za to říci, že tato zlověstná zpráva vás signalizuje o kritické systémové chybě. Navíc není zdaleka vždy možné zachytit okamžik a mít čas přečíst chybový kód, když Windows spadne do modré obrazovky smrti a zařízení se restartuje. Okamžitě si všimneme, že existuje velké množství řešení tohoto problému a také příčiny modré obrazovky. V tomto článku se pokusíme zvážit pravděpodobné příčiny modré obrazovky štěstí a také možná řešení problému.

    V naprosté většině případů modrá obrazovka smrti signalizuje chybu BAD_POOL_CALLER - stop 0x000000c2. Upřímně řečeno je obtížné tuto chybu diagnostikovat, ale je možné, že se pokusíme popsat algoritmus vašich dalších akcí na příkladu této chyby.

    Chcete-li správně diagnostikovat problém, musíte nejprve analyzovat speciální systémový soubor s názvem minidump (výpis paměti). Vytváření takových souborů vede k poruše v systému, navíc nás mohou informovat - co přesně k poruše vedlo.

    1. Chcete-li povolit takové automatické nahrávání malého výpisu paměti (ve výchozím nastavení zakázáno), přejděte do vlastností počítače a přejděte do části „Pokročilá nastavení systému“ (toto zahrnutí je poskytováno pro všechny systémy, nejen pro Windows 10):

    Zpravidla se všechny soubory minidump uloží, když se objeví modrá obrazovka smrti (BSOD), a můžete je najít ve složce C:\Windows\Minidump. Je pozoruhodné, že název souboru obsahuje aktuální datum - kdy byl vytvořen, což značně usnadňuje identifikaci data, kdy k chybě došlo, zejména s ohledem na to, že takových souborů může být více.

    Dva způsoby, jak dešifrovat malý minidump paměti dame

    První způsob, je použít poměrně populární nástroj BlueScreenView. Tento nástroj může být také dobrou volbou pro analýzu výpisu paměti. Použití tohoto nástroje se hodí jako způsob, jak identifikovat problémový ovladač.

    Navíc je zvláště pozoruhodný v tom, že jej lze použít k zobrazení BSOD (modrá obrazovka smrti) jako v zmrazeném snímku, jako tomu bylo při zhroucení systému. Zobrazuje čas a datum poruchy, podrobnosti o ovladači nebo modulu s verzí a krátkým popisem. Kromě toho je nástroj k dispozici v mnoha jazycích, včetně ruštiny. Takže nástroj BlueScreenView je to pravé, pokud potřebujete rychle analyzovat výpisy paměti během BSOD.

    Pro druhá metoda musíte nainstalovat Debugging Tools for Windows a také stáhnout nástroj bsdos_utility. Dále, po rozbalení skriptu bsdos_utility.cmd byste jej měli přesunout na jednotku C:\ (můžete vytvořit samostatnou složku, ale nezapomeňte, že řetězec adresy pro spuštění skriptu se bude lišit od našeho příkladu). Poté na příkazový řádek napište:

    C:\bsdos_utility.cmd

    Po zobrazení seznamu všech výpisů ze seznamu C:\Windows\Minidump\, načež se skript zeptá, který výpis má být analyzován. Můžete si také sami vybrat požadovaný minidump při spuštění skriptu:

    Podobně je možné odhalit spoustu chyb Windows 10, které způsobily BSOD, a také problematické .exe programy, které způsobily modrou obrazovku.

    Dobré odpoledne, vážení kolegové a čtenáři blogu. Dnes vám chci říct, jak analyzovat výpis paměti Windows 10 Redstone. To se provádí ve většině případů, když se zobrazí modrá obrazovka smrti s chybou, po které se počítač restartuje. A tato analýza pomáhá pochopit příčinu selhání.

    Nastavení výpisu paměti systému Windows 10

    A co je tedy výpis paměti v operačním systému Windows 10 Redstone. Výše jsem vám popsal velmi častý důvod, proč se objevuje výpis systémové paměti a to jsou modré obrazovky smrti. Důvody jejich vzhledu jsou velmi rozsáhlé:

    • Nekompatibilita aplikací
    • Nekompatibilita ovladačů
    • Nové aktualizace systému Windows
    • Zařízení není kompatibilní

    Toto je jen malý zobecněný seznam, protože existuje spousta chybových kódů z modrých obrazovek, uvedu ty nejnovější.

    Naším úkolem je umět tyto soubory najít pro diagnostiku a umět je interpretovat pro získání informací o problému.

    Kde je nakonfigurován výpis při selhání systému Windows 10?

    Nejprve zjistíme, kde je provedeno nastavení, které je zodpovědné za výpis paměti při selhání systému Windows 10. Klepněte pravým tlačítkem myši na tlačítko Start systému Windows 10 a z místní nabídky vyberte položku Systém.

    V okně Systém, které se otevře, vyberte v levém horním rohu Pokročilá nastavení systému.

    Zde se konfiguruje výpis paměti Windows 10. Klikněte na položku nastavení v Boot and Recovery.

    Z nastavení, výpis paměti systému Windows 10, chci poznamenat následující:

    • Zapište událost do systémového logu > zde budou do protokolů operačního systému přidány informace o modré obrazovce.
    • Proveďte automatický restart > a pokračujte v práci po chybě
    • Zapsat informace o ladění > umožňuje vybrat typ souboru výpisu, více o tom níže.
    • Nahradit existující soubor výpisu, užitečné zaškrtávací políčko, protože tyto výpisy mohou vážit desítky gigabajtů, je to velmi důležité pro malé jednotky ssd.

    Typy výpisů paměti

    Podívejme se, jak se liší možnosti záznamu ladicích informací.

    • Malý výpis paměti 256 kB: Soubory malého výpisu paměti obsahují následující informace:

    – fatální chybová zpráva, její parametry a další údaje;

    – seznam načtených ovladačů;

    – kontext procesoru ( PRCB) na kterém k poruše došlo;

    EPROCESS) pro proces, který chybu způsobil;

    – informace o procesu a kontext jádra ( ETHREAD) pro vlákno, které chybu způsobilo;

    – zásobník volání režimu jádra pro vlákno, které způsobilo chybu.

    Používá se, když máte na místním disku velmi málo místa na disku. Kvůli tomu obětujeme užitečné informace, které nemusí stačit k diagnostice modré obrazovky.

    Minidump je uložen podél cesty C:\Windows\Minidump

    • Výpis paměti jádra > zaznamenává pouze paměť jádra. V závislosti na velikosti fyzické paměti počítače v tomto případě vyžaduje stránkovací soubor 50 až 800 MB nebo jednu třetinu fyzické paměti počítače na spouštěcím svazku.
    • Úplný výpis paměti > no, z názvu je vše jasné. Píše úplně všechno, to je maximum informací o modré obrazovce, dává stoprocentní diagnostiku problému.

    Nachází se podél cesty C:\Windows\Memory.dmp

    • Aktivní výpis paměti > sem se dostává aktivní paměť hostitelského stroje, je to funkce spíše pro serverové platformy, protože je lze použít pro virtualizaci, a aby se informace o virtuálních strojích nedostaly do výpisu, byla vymyšlena tato možnost.

    Všechny systémy Windows při zjištění závažné chyby vytvoří nouzový výpis (snímek) obsahu paměti RAM a uloží jej na pevný disk. Existují tři typy výpisu paměti:

    Úplný výpis paměti - uloží celý obsah paměti RAM. Velikost snímku je rovna velikosti RAM + 1 MB (záhlaví). Používá se velmi zřídka, protože na systémech s velkým množstvím paměti bude velikost výpisu příliš velká.

    Výpis paměti jádra - ukládá informace o paměti RAM související pouze s režimem jádra. Informace o uživatelském režimu se neukládají, protože nenesou informace o příčině pádu systému. Velikost souboru výpisu závisí na velikosti paměti RAM a pohybuje se od 50 MB (pro systémy se 128 MB RAM) do 800 MB (pro systémy s 8 GB RAM).

    Malý výpis paměti (mini dump) – obsahuje poměrně malé množství informací: chybový kód s parametry, seznam ovladačů načtených do RAM v době pádu systému atd., ale tyto informace stačí k identifikaci neúspěšného ovladače. Další výhodou tohoto typu výpisu je malá velikost souboru.

    Nastavení systému

    K identifikaci ovladače, který to způsobil, nám bude stačit použít malý výpis paměti. Aby systém během havárie uložil minivýpis, musíte provést následující kroky:

    Pro Windows XP Pro Windows 7
    1. Můj počítač Vlastnosti
    2. Přejděte na kartu Dodatečně;
    3. Možnosti;
    4. V terénu Zápis ladicích informací Vybrat Malý výpis paměti (64 KB).
    1. Klikněte pravým tlačítkem na ikonu Počítač z kontextové nabídky vyberte Vlastnosti(nebo kombinace kláves Win+Pause);
    2. V levém menu klikněte na položku Další nastavení systému;
    3. Přejděte na kartu Dodatečně;
    4. V poli Stáhnout a obnovit klikněte na tlačítko Možnosti;
    5. V terénu Zápis ladicích informací Vybrat Malý výpis paměti (128 KB).

    Po provedení všech manipulací se po každém BSoD uloží soubor s příponou .dmp do složky C:\WINDOWS\Minidump. Doporučuji vám přečíst si materiál "". Můžete také zaškrtnout políčko " Nahradit existující soubor výpisu". V tomto případě každý nový výpis z havárie přepíše ten starý. Tuto možnost nedoporučuji zapínat.

    Analýza výpisu zhroucení s BlueScreenView

    Takže poté, co se objevila modrá obrazovka smrti, systém uložil nový výpis pádu. Pro analýzu výpisu doporučuji použít program BlueScreenView. Dá se stáhnout zdarma. Program je docela pohodlný a má intuitivní rozhraní. Po instalaci je první věcí, kterou musíte udělat, určit umístění pro ukládání výpisů paměti v systému. Chcete-li to provést, přejděte na položku nabídky „ Možnosti“ a vyberte „ PokročilýMožnosti". Vyberte přepínač zatíženízaNásledujícíMini Skládkasložku“ a určete složku, kde jsou výpisy uloženy. Pokud jsou soubory uloženy ve složce C:\WINDOWS\Minidump, můžete kliknout na „ Výchozí". Klikněte na OK a přejděte do rozhraní programu.

    Program se skládá ze tří hlavních bloků:

    1. Blok hlavního menu a ovládací panel;
    2. Crash výpis seznamu blok;
    3. V závislosti na zvolených parametrech může obsahovat:
    • seznam všech ovladačů v paměti RAM před zobrazením modré obrazovky (výchozí);
    • seznam ovladačů umístěných v zásobníku RAM;
    • snímek obrazovky BSoD;
    • a další hodnoty, které nebudeme používat.

    V bloku seznamu výpisů paměti (na obrázku označeném číslem 2) vyberte výpis, který nás zajímá, a podívejte se na seznam ovladačů, které byly načteny do paměti RAM (na obrázku označeny číslem 3). Ovladače, které byly v zásobníku paměti, jsou zbarveny růžově. Jsou příčinou BSoD. Dále přejděte do hlavní nabídky ovladače a určete, ke kterému zařízení nebo programu patří. V první řadě si dejte pozor na nesystémové soubory, protože systémové soubory se stejně načítají do RAM. Je snadné vidět, že myfault.sys je chybný ovladač v obrazu. Řeknu, že tento program byl speciálně spuštěn, aby způsobil chybu Stop. Po identifikaci chybného ovladače jej musíte buď aktualizovat, nebo odebrat ze systému.

    Aby program zobrazil seznam ovladačů, které jsou v zásobníku paměti během výskytu BSoD, musíte přejít na položku nabídky „ Možnosti"klikněte na nabídku" DolníPodoknorežimu“ a zvolte „ PouzeŘidičiNalezenovZásobník“ (nebo stiskněte klávesu F7) a pro zobrazení snímku obrazovky s chybou vyberte „ ModrýObrazovkavXPstyl“ (F8). Chcete-li se vrátit na seznam všech ovladačů, musíte vybrat položku „ VšechnoŘidiči“ (F6).