Memory dump w Windows 7
Blue Screen jest dla mnie jednym z najciekawszych trybów pracy systemu. Wiem, ze wielu uzytkowników nie podziela mojego zdania, ale pod tym niebieskim ekranem dzieja sie naprawde interesujace rzeczy.
Jedna z nich jest tworzenie zrzutu pamieci. To nie jest takie proste jak sie moze wydawac, ale z punktu uzytkownika widac przede wszystkim interfejs. A w nim (w oknie Startup and Recovery) jest wybór zawartosci dumpa. Tradycyjnie, opcje sa cztery:
- (none) – dla tych, którzy nie maja ochoty dowiedziec sie dlaczego system dziala inaczej niz oczekuja
- Small Memory Dump – zapisywany jest zawsze, niezaleznie od tego co uzytkownik wybierze. Zawiera bardzo podstawowe, ale czesto wystarczajace informacje. Pliki maja unikalne nazwy i zbieraja sie do analizy (domyslnie 50 ostatnich) jak ktos kiedys zechce. https://msdn.microsoft.com/en-us/library/cc266485.aspx
- Kernel Memory Dump – zapisuje pamiec jadra. Przy kolejnym zrzucie plik jest nadpisywany. https://msdn.microsoft.com/en-us/library/cc266504.aspx
- Complete memory dump – zapisuje na dysk cala pamiec. https://msdn.microsoft.com/en-us/library/cc266494.aspx
I mimo, ze w nowszych systemach w szczególach cos sie zmienia, to ogólna idea pozostaje taka sama "od zawsze". W Windows 7 pojawia sie jednak drobny problem:
Nie ma opcji zrzutu calej pamieci. Moze i slusznie...? Nie wiem. Wiem za to, ze jezeli ktos bardzo chce – moze ja sobie wlaczyc przez rejestr. W galezi HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl jest wartosc CrashDumpEnabled. Tam zapisany jest tryb zrzutu, gdzie:
- 0 oznacza brak zrzutu,
- 1 – zrzut pelny,
- 2 – zrzut jadra,
- 3 – small dump.
Wystarczy wpisac tam 1 i nie dosc, ze beda sie wykonywac pelne zrzuty, to jeszcze brakujaca opcja pojawi sie w GUI. Tak swoja droga, na komputerach z iloscia pamieci RAM mniejsza niz 2GB opcja ta jest normalnie widoczna. Ot takie ustawienie, zeby "grzebacz" nie wlaczyl sobie mechanizmu wrzucajacego mu na dysk ogromne pliki. Nie wiem, czy lubie jak ktos do tego stopnia mysli za mnie, ale znajac trik z rejestrem, nie mam w tym przypadku wielkiego problemu.
Tak swoja droga, dla niemyslacych, Microsoft przygotowal jeszcze jedna niespodzianke. Jezeli Windows 7 nie jest w domenie i ma mniej niz 25GB wolnego miejsca na dysku – zrzut sie nie wykona. Oczywiscie mozna to sobie w rejestrze wlaczyc (AlwaysKeepMemoryDump=1). Troche wiecej informacji na ten temat mozna znalezc na https://blogs.msdn.com/wer/archive/2009/02/09/kernel-dump-storage-and-clean-up-behavior-in-windows-7.aspx
Autor: Grzegorz Tworek [MVP]