BSOD nie je nič príjemné, ale ešte stále je tu šanca že svoj problém odstránime, pretože nám veľa napovie. Horšie je, keď nám počítač nenávratne pauzne zrovna keď máme CPU vyťažený na 5% pri písaní textu. Práve v tejto chvíli by sme radšej asi videli BSOD, hlavne keď je PC po niekoľkých stress testoch, memory testoch a nepomáha ani uloženie PC do pyramídy. Tento návod vznikol aj preto, že veľa problémov na tomto fóre je aj s BSOD a ich šťastní vlastníci si s tým nevedia rady. Takže tento návod je hlavne pre nich a komu z ničoho nič reštartuje Windows počítač, tiež nech sem nakukne. Ale späť k návodu.
Obsah:
1.1 Nastavenie výpisov v systéme
1.2 Inštalácia Debugging Tools for Windows
1.3 Nastavenie Debugging Tools for Windows
2.1 Analýza minidumpu pomocou Debugging Tools for Windows
2.2 Nástroj Verifier
2.3 Liečenie od infekcií
2.4 Perličky na záver
edit 23.08.2009: Na rýchlu a jednoduchú analýzu môžeme použiť aj
BlueScreenView, spolu s
Bug Check Codes je to silný nástroj. (Vďaka
br4n0)
1.1 V prvom rade treba skontrolovať aj keď to býva defaultne nastavené, či je zapnutý malý výpis pamäte pri chybe. To urobíme nasledovne:
v XP
[start -> run -> control sysdm.cpl,,3 -> Startup and Recovery - Settings
]
vo Viste
[start -> pravý klik na Computer -> Properties -> Advanced -> Startup and Recovery - Settings
]
Vypneme
Automatically restart a nastavíme
Small memory dump (64KB), keďže kompletný výpis pamäte je pre naše potreby zbytočný a výpis kernela zase nedostačujúci. Štandartne sa výpis ukladá sem: C:\WINDOWS\Minidump\*.dmp a skontrolujeme či je povolený stránkovací súbor
pagefile.sys.
1.2 Ďaľší krok je nainštalovanie Debugging Tools for Windows
32-bit a 64-bit + treba mať nainštalovaný .NET Framework.
1.3 Po nainštalovaní prevedieme tieto nastavenia:
Musíme určiť cestu k symbolom
[File -> Symbol File Path ->
http://msdl.microsoft.com/download/symbols] týmto mu povieme aby hľadal symboly na serveri Microsoftu. Môžeme si symboly
stiahnuť aj na PC a robiť analýzu offline, nezabudnime potom ale povedať Debuggeru kde sú uložené, napríklad C:\WINDOWS\Symbols. Ak máme viac balíkov symbolov kvôli rôznym verziám, oddeľujeme ich bodkočiarkou a medzerou. V uvedenom príklade to bude vyzerať v nastavení Symbol File Path takto
[http://msdl.microsoft.com/download/symbols; C:\WINDOWS\Symbols
] mám ale skúsenosť, že stačí ponechať ako zdroj iba server Microsoftu, alebo nainštalovať všetky verzie a vždy aktualizované, pretože sa mi stávalo že nie vždy som našiel pri analýze všetky symboly ak som sa spoliehal iba na stiahnuté balíky. Ak chceme aby Debugger symboly ukladal na disku, nastavíme adresu serveru v nastavení Symbol File Path takto
[SRV*C:\WINDOWS\Symbols-cache*http://msdl.microsoft.com/download/symbols
] kde *C:\WINDOWS\Symbols-cache* predstavuje cestu ktorú si môžeme zvoliť.
Ak robíme vlastnú analýzu minidumpu, je dobré si nastaviť aj
[File -> Image File Path -> C:\WINDOWS; C:\WINDOWS\system32; C:\WINDOWS\system32\drivers
] je to z toho dôvodu, že pri analýze sa bude vychádzať z týchto súborov a môžeme tak presnejšie zistiť že je napríklad nejaká knižnica stará. Ak robíme analýzu cudzieho minidumpu nebudú tieto cesty brané v úvahu a uvidíme vždy aktuálnu verziu súboru z Microsoft serveru alebo bez dátumu ak je to ovládač tretej strany, čo je logické keďže nemáme k dispozícii systémové súbory kde bol minidump vytvorený. Debugger vždy píše cestu odkiaľ berie informáciu o súbore, takže podľa toho sa riadime. Keďže potrebné a dostačujúce nastavenia sme vykonali, dáme Exit a pri otázke
Save information for workspace? dáme
Yes, inak sa nastavenia nezapíšu, a sme pripravený na analýzu prvého minidumpu.
2.1 Analýza minidumpu v nástroji Debugging Tools for Windows
[File -> Open Crash Dump -> štandardne C:\WINDOWS\Minidump\*.dmp
] a začne sa analýza minidumpu, o tom že Debugger pracuje sme informovaný ukazovateľom *busy* vľavo dole. V hlavičke vidíme naše nastavenia, verziu Windowsu, čas vzniku minidumpu a celkový čas systému od štartu až po pád. V nových verziách Debuggera, čo je aj táto sa objaví príkaz
!analyze -v na ktorý smelo klikneme. K ďaľším príkazom sa vyjadrím neskôr. Pre nás budú dôležité tieto údaje:
BugCheck za ktorým nasleduje jedno z týchto
čísiel a postupne získavame predstavu čo sa mohlo stať. Všímame si
PROCESS_NAME,
MODULE_NAME a
IMAGE_NAME. Ak má súbor neštandardnú cestu, prípadne názov prípadne oboje, napríklad C:\WINDOWS\Temp\yzz5d.tmp môže sa jednať aj o vírus. V každom prípade ak máme podozrenie môžeme súbor otestovať na
VirusTotal. Systémové súbory Windowsu väčšinou chybu nespôsobujú takže si všímame súborov naviazaných na ne, ktoré túto chybu spôsobujú a
googlujeme. Vo väčšine prípadov eliminácia/aktualizácia súboru na ktorom systém padá vyrieši daný problém. Môžeme si pomôcť aj nástrojom
AutoRuns a presne zistíme komu súbor patrí ak sa spúšťa po štarte. Ak patrí už odinštalovanému programu alebo sme si istý že jeho deaktiváciou nespôsobíme nenabehnutie systému prípadne inú nestabilitu a nepotrebujeme ho, tak ho tu môžeme deaktivovať.
Ak spôsobuje chybu zakaždým iný súbor, alebo je chyba nedefinovateľná, pravdepodobne bude chyba v hardware, prípadne iná vzájomná nekompatibilita. V tomto prípade je nutnosť otestovať Systémovú pamäť -
Memtest86+, Grafickú pamäť -
Video Memory stress Test <- v adresári VMTCE sa nachádza ISO a môžeme vykonať aj kontrolu Harddisku
nástrojom od výrobcu príslušného disku.
Ak robíme analýzu cudzieho minidumpu je dobré použiť príkaz
lmv zadáva sa dole do príkazového riadku, je to výpis všetkých modulov v pamäti v danom okamžiku a máme aspoň približnú predstavu čo dotyčnému v počítači bežalo. Ďaľšie užitočné príkazy sú
lsm - výpis všetkých non-Microsoft modulov v pamäti,
!vm - využitie pamäte, a príkazy ktoré som nikdy nevyužil
!thread,
!process 0 0 (kde nula nula je pravdepodobne rozsah),
!irp,
!locks,
!help
2.2 Nástroj Verifier
Windows má užitočnú funkciu a to záťažový test pre nepodpísané ovládače. Ak teda chceme vylúčiť tieto ovládače musíme spustiť
Verifier.exe [start -> run -> verifier -> Create custom settings -> Select individual settings from a full list -> aktivujeme všetko okrem Low resources simulation -> Automatically select unsigned drivers
] Pre zrušenie
[start -> run -> verifier -> Delete existing settings
] alebo
[start -> run -> verifier /reset
]. Vo Viste ak nemáme aktivovaný príkazový riadok, tak ideme cez Start Search. Ak sa problémový ovládač prejaví tak máme z polovice vyhraté, pretože to môže byť náš problém.
!Treba si ale uvedomiť, že keď sa chybný ovládač prejaví, každý reštart Windowsu bude do BSOD pokým nastavenie Verifiera nezrušíme, a to cez núdzový režim. Takže predtým než urobíme tento krok, treba skontrolovať či máme prístup do núdzového režimu a či sa v ňom príkaz verifier /reset vykoná
!
2.3 Liečenie od infekcií
Ak máme podozrenie na vírus, môžeme vykonať kontrolu PC nasledovnými nástrojmi:
Malicious Software Removal Tool od Microsoftu pravidelne aktualizovaný,
GMER na rootkity a MBR harddisku,
mbam a v krajnom prípade
mwav ale s týmto nástrojom opatrne, pretože ide dosť do hĺbky a niekedy vymaže aj to čo nemá. Tých nástrojov je samozrejme viac, tieto používam najčastejšie.
2.4 Perličky na záver:
!Notmyfault simulácia reálneho BSOD, doporučujem skúšať vo virtuálnom PC
!
Test pamäte od Microsoftu.
BlueScreen Screen Saver v3.2 Spyware Terminator mi ho blokoval, ale otestoval som ho a až na nekorektné prepnutie farieb na ploche je to v poriadku.
Ďaľšie zdroje:
Microsoft
Windows Stop Messages
// Téma označená ako dôležitá. (Tomas1)