System w zawieszeniu
-

- Krzysztof Daszkiewicz,
-

- Michael Schmelzle,
-

- Thomas Rau,
- 01.10.2005
Zawieszenia systemu stały się stałym punktem programu w codziennej pracy z komputerem. A nie powinny. Ich przyczyny dają się zazwyczaj ustalić i usunąć prostymi środkami. Mając do dyspozycji odpowiednią wiedzę i narzędzia, uzyskasz stabilny system.
Zawieszenia systemu stały się stałym punktem programu w codziennej pracy z komputerem. A nie powinny. Ich przyczyny dają się zazwyczaj ustalić i usunąć prostymi środkami. Mając do dyspozycji odpowiednią wiedzę i narzędzia, uzyskasz stabilny system.
Regularne zawieszenia systemu, restarty bez przyczyny i nielogiczne komunikaty alarmowe na niebieskim ekranie należą do tradycji Windows. Wielu użytkowników przywykło do nich, wzruszając obojętnie ramionami. Tymczasem wcale nie musisz godzić się na częste przerywanie pracy. Jeśli zdecydujesz się ustalić, dlaczego twój komputer odmawia posłuszeństwa, pozbędziesz się przyczyny zakłóceń, oszczędzając czas, nerwy i pieniądze.
Bez automatu - aby uzyskać możliwość przeanalizowania alarmu na niebieskim ekranie, musisz zablokować samoczynny restart systemu w przypadku zawieszenia.
Na płycie dołączonej do bieżącego wydania znajdziesz narzędzia testujące i monitorujące, które przydadzą ci się w realizacji poniższych wskazówek i będą informowały na bieżąco o sukcesach podjętych kroków.
Analiza
Każdy sprawca pozostawia ślady. Podobnie jest z zawieszaniem się komputera. Windows 2000 i XP protokołują wszystkie zdarzenia, które nastąpiły przed przerwaniem pracy systemu. Tłumacząc właściwie wskazówki, które znajdziesz w niebieskim komunikacie alarmowym lub choćby w Podglądzie zdarzeń, szybko dopadniesz winnego.
1. Zabezpieczanie śladów
Edycje Windows wcześniejsze od wersji XP sygnalizowały jednoznacznie zawieszenie komputera: na monitorze pojawiał się budzący grozę niebieski ekran z komunikatem. Tymczasem w środowisku Windows XP informacja znika po ułamku sekundy. Zazwyczaj komputer samoczynnie wykonuje natychmiastowy restart, abyś mógł wznowić pracę i - jeżeli to możliwe - uratować dane z plików otwartych przed zawieszeniem.
Niczym lustro - ustaw rozmiar pliku, w którym Windows umieści obraz pamięci RAM w momencie zawieszenia.
2. Analiza zebranych informacji
Komunikat wyświetlony białą czcionką na niebieskim tle dostarcza pierwsze ślady prowadzące do przyczyny zawieszenia. Znajdziesz tu również propozycje usunięcia problemu, jednak zwykle sformułowane zbyt ogólnie, aby cokolwiek pomóc.
Istotny jest kod błędu widniejący w wierszu, który zaczyna się od ciągu ***STOP. Powinna się w nim znajdować liczba szesnastkowa wg wzorca 0x000000A i komunikat typu IRQL_NOT_LESS_OR_EQUAL.
Spis kodów zawartych w wierszu ***STOP znajdziesz m.in. pod adresemhttp://aumha.org/win5/kbestop.php. Warto także skorzystać z usług Google (http://www.google.pl ).
3. Zrzucanie pamięci
Inspekcja sterowników - program VERIFIER.EXE nadzoruje sterowniki i bije na alarm w razie nieprawidłowości.
Windows tworzy domyślnie miniaturowy (64 KB) zrzut pamięci, umieszczając w nim tylko najbardziej istotne informacje. Stosownym plikom zrzutów system nadaje nazwy zgodnie ze wzorcem MINI060105-01.DMP. Pierwsze cztery litery pozostają bez zmian w każdym zrzucie. Po nich następuje data (format: miesiąc, dzień i rok) i - po myślniku - numer zrzutu. Na końcu system wstawia rozszerzenie DMP. W powyższym przykładzie masz do czynienia z pierwszym zrzutem utworzonym pierwszego czerwca br. Wszystkie pliki tych zrzutów Windows gromadzi w folderze %systemroot%\minidump (czyli domyślnie \windows\minidump). Analizując ich treść, możesz na przykład ustalić, czy częste zawieszenia mają tę samą przyczynę.
Bardziej szczegółowe informacje zapewnia tzw. zrzut pamięci jądra. Jego rozmiary osiągają mniej więcej jedną trzecią pojemności pamięci roboczej. Co najmniej tyle wolnego miejsca musisz wygospodarować na partycji systemowej. Aby uaktywnić odpowiednią opcję, przywołaj okno Uruchamianie i odzyskiwanie (otwórz aplet System w Panelu sterowania, po czym klikaj kolejno Zaawansowane | Uruchamianie i odzyskiwanie | Ustawienia). Następnie zaznacz opcję Zrzut pamięci jądra w polu listy Zapisywanie informacji o debugowaniu. Zrzut zostanie zapisany jako plik memory.dmp w katalogu systemu Windows. Pamiętaj jednak, że ze względu na pokaźne rozmiary zrzutów system domyślnie zastępuje starszy plik nowszym podczas kolejnego zawieszenia.
Windows zapewnia jeszcze pełny zrzut pamięci, ale pochłania on gigantyczną ilość miejsca na dysku (tyle, co łącznie pamięć robocza plus 1 MB), a zawartością niewiele się różni od zrzutu pamięci jądra.
4. Badanie zrzutów
Materiał dowodowy - narzędziem Windbg zawęzisz krąg podejrzanych do kilku lub nawet jednego sterownika.
Aby zainicjować badanie zrzutu, uruchom program Windbg. Po wskazaniu menu File | Open Crash Dump otwórz plik DMP, który masz zamiar poddać analizie. W oknie aplikacji poszukaj wpisu Probably caused by. Zwykle zostanie w nim podana nazwa pliku sterownika z rozszerzeniem SYS. Prawdopodobnie to on powoduje kłopoty.
Więcej informacji uzyskasz, gdy wpiszesz polecenie analyze -v w dolnym wierszu za znakiem zgłoszenia >kd. Na początku tekstu, tuż pod wpisem Bugcheck Analysis i nieco poniżej wpisu Exception Code widnieją kody błędów, które można wpisać w internetowej wyszukiwarce Google i w ten sposób tropić powody kłopotów. Gdy wkleisz opis błędu (np. KMODE EXCEPTION NOT HANDLED) za poleceniem .hh w wierszu poleceń, na ekranie pojawi się okno pomocy programu Windbg, oferując dodatkowe informacje pomagające usunać problem.
Ponadto przydatne są wiersze w sekcji STACK_TEXT. Zapisy niezaczynające się od łańcucha !nt wskazują sprawców zawieszania się systemu.
Gdy system przestanie reagować na twoje polecenia, możesz ręcznie wywołać komunikat na niebieskim ekranie. Przytrzymaj w tym celu naciśnięty prawy klawisz [Scroll Lock]. Windows zrzuci zawartość pamięci do pliku na twardym dysku i będziesz mógł poszukać przyczyny zawieszenia (patrz punkt 4). Aby ta metoda zadziałała, musisz otworzyć uprzednio rejestr, przejść do klucza "HKEY_ LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\Services\ i8042prt\Parameters" i utworzyć w nim wartość DWORD. Przypisz jej cyfrę 1 w polu Dane wartości.
Aby Windows mógł dynamicznie wczytywać pliki symboli wymagane do debugowania (punkt 4), utwórz folder, w którym będzie je buforował, np. C:\Symbols. Uruchom następnie Windbg i wskaż menu File | Symbol File Path. W pole Symbol Path wpisz następujący ciąg: SRV*c:\symbols*http://msdl.microsoft.com/downloads/symbols.v
Jeśli w twoim notebooku brakuje klawisza [Reset], zmusisz go do restartu, wywołując ręcznie komunikat na niebieskim ekranie. Po opisanej powyżej modyfikacji rejestru musisz ponownie zaznaczyć pole wyboru Automatycznie uruchom ponownie.
Środowiska Windows 2000 i XP wyposażono w zaawansowane narzędzie verifier.exe, czyli menedżer weryfikowania sterowników. Właściwie jest przeznaczone dla producentów, ale możesz go użyć do sprawdzania stabilności działania sterowników. Aby je przywołać, kliknij menu Start | Uruchom, po czym wpisz polecenie verifier. W pierwszym oknie pozostaw zaznaczoną domyślnie opcję Utwórz ustawienia standardowe, w drugim zaś opcję Automatycznie wybierz sterowniki niepodpisane. Jeśli podejrzewasz określone sterowniki o destabilizowanie systemu, możesz poddać tylko te. Użyj opcji Wybierz nazwy sterowników z listy. Narzędzie verifier.exe rozpocznie badanie sterowników, gdy zrestartujesz system. Sprawdzi między innymi, czy poprawnie obchodzą się z pamięcią operacyjną i czy zwalniają nieużywane obszary, dlatego podczas testów nie odchodź od komputera.
Gdy verifier.exe wykryje błąd, wyświetli komunikat alarmowy na niebieskim ekranie. Możesz go przeanalizować, według opisu w punkcie 4. Im więcej sterowników bada, tym więcej pochłania zasobów i tym bardziej spowalnia komputer. Jeżeli masz zainstalowany pakiet Norton AntiVirus, wyłącz wykrywanie blokad (szczegółowe objaśnienia znajdziesz pod adresemhttp://support.microsoft.com/ kb/325672/en-us.
Przed użyciem menedżera weryfikowania sterowników koniecznie sporządź zapasową kopię całego systemu. W ten sposób zabezpieczysz się przed skutkami przykrych niespodzianek.
Gdy po wyświetleniu komunikatu na niebieskim ekranie Windows nie daje się uruchomić, naciśnij klawisz [F8], zanim nastąpi próba rozruchu, a potem wybierz polecenie Ostatnia znana dobra konfiguracja z menu startowego. Wówczas system odtworzy konfigurację sprzed awarii.
Gdy system zawiesi się po zainstalowaniu nowego sprzętu lub sterownika, warto zajrzeć do Menedżera urządzeń. Przywołasz go z poziomu Panelu sterowania, klikając aplet System i kartę Sprzęt. Alternatywnie kliknij menu Start | Uruchom i wpisz devmgmt. msc. Zwróć uwagę na wpisy opatrzone ikoną. Czarny wykrzyknik na tle żółtego kółka wskazuje, że Windows ma kłopoty z danym podzespołem - na przykład dlatego, że stosuje uszkodzony sterownik. Biały x na czerwonym tle oznacza, że urządzenie jest wyłączone, natomiast żółtym pytajnikiem system sygnalizuje, że nie udało się zainstalować odpowiedniego sterownika. Aby ustalić przyczynę problemu, kliknij urządzenie dwukrotnie. W rubryce Stan urządzenia widnieje opis i identyfikator błędu, a listę błędów znajdziesz pod adresem http://support.microsoft.com/kb/310123/pl.
Również pozostałości po odinstalowanych sterownikach mogą destabilizować system. Użyj polecenia devmgmt.msc set DEVMGR_SHOW_ NONPRESENT_ DEVICES=1, aby włączyć wyświetlanie wszystkich sterowników. Następnie przywołaj Menedżer urządzeń i wskaż menu Widok | Pokaż ukryte urządzenia.