Запис налагоджувальної інформації windows 10 що ставити. Як за допомогою дампа пам'яті визначити драйвер, що викликає BSOD. Налаштування сервера налагоджувальних символів у WinDBG

Здрастуйте друзі, сьогодні розберемо цікаву тему, яка допоможе вам у майбутньому з появою синього екранусмерті (BSoD).

Як і мені, так і багатьом іншим користувачам доводилося спостерігати появу екрану із синім тлом, на якому щось написано (білим по синьому). Дане явище говорить про критичну неполадку, як у програмне забезпечення, наприклад, конфлікт драйверів, і у фізичної несправності якогось компонента комп'ютера.

Нещодавно у мене знову з'явився блакитний екран у Windows 10, але я швидко його позбувся і скоро про це вам розповім.

Отже, більшість користувачів не знають, що BSoD можна аналізувати, щоб згодом зрозуміти проблеми критичної помилки. Для таких випадків Windowsстворює на диску спеціальні файли – , їх ми і будемо аналізувати.

Є три типи дампи пам'яті:

Повний дамп пам'яті– ця функція дозволяє повністю зберегти вміст оперативної пам'яті. Він рідко використовується, тому що уявіть, що у вас 32 Гб оперативної пам'яті, при повній дампі весь цей об'єм збережеться на диску.

Дамп ядра– зберігає інформацію про режим ядра.

Малий дамп пам'яті– зберігає невеликий обсяг інформації про помилки та завантажені компоненти, які були на момент появи несправності системи. Ми будемо використовувати саме цей тип дампа, тому що вона дасть нам достатньо відомостей про BSoD.

Розташування, як малого, і повного дампа відрізняється, наприклад, малий дамп перебуває наступним шляхом: %systemroot%\minidump.

Повний дамп знаходиться тут: %systemroot%.

Для аналізу дампів пам'яті існують різні програмиале ми скористаємося двома. Перша – Microsoft Kernel Debuggers, як відомо з назви утиліта від Microsoft. Завантажити її можна з офіційного сайту. Друга програма - BlueScreenView, безкоштовна програма, завантажуємо звідси.

Аналіз дампи пам'яті за допомогою Microsoft Kernel Debuggers

Для різних версій систем необхідно завантажувати власний тип утиліти. Наприклад, для 64-х розрядної операційної системи, Потрібна 64-бітова програма, для 32-розрядної - 32-бітна версія.

Це ще не все, вам потрібно завантажити та встановити пакет налагоджувальних символів, потрібні для програми. Називається Debugging Symbols. Кожна версія цього пакету теж завантажується під певною ОС, для початку дізнайтеся яка у вас система, а потім завантажуйте. Щоб вам не шукати будь-де ці символи, ось посилання на скачування . Установка, бажано, повинна здійснюватися цим шляхом: %systemroot%\symbols.

Тепер можна запускати наш відладчик, вікно якого виглядатиме ось так:

Перш ніж проаналізувати дампи, ми дещо налаштуємо в утиліті. По-перше, потрібно вказати програмі, куди ми встановили символи налагодження. Для цього натискаємо кнопку «File» і вибираємо пункт «Symbol File Path», потім вказуємо шлях до символів.


Програма дозволяє витягувати символи прямо з мережі, тому вам навіть не доведеться завантажувати їх (вибачте ті, хто вже скачав). Вони будуть братися з сервером Microsoft, тому все безпечно. Отже, вам потрібно знову відкрити "File", потім "Symbol File Path" і ввести наступну команду:

SRV*%systemroot%\symbols*http://msdl.microsoft.com/download/symbols


Таким чином, ми вказали програмі, що символи повинні братися з мережі. Як тільки ми це зробили натискаємо File і вибираємо пункт Save Workspace, потім тиснемо ОК.

От і все. Ми налаштували програму на потрібний лад, тепер приступаємо до аналізу дампів пам'яті. У програмі натискаємо кнопку "File", потім "Open Crash Dump"та вибираємо потрібний файл.

Kernel Debuggers розпочне аналіз файлу і після цього виведе результат причини помилки.


У вікні можна вводити команди. Якщо ми введемо !analyze -v, Отримаємо більше інформації.

Ось і все із цією програмою. Щоб зупинити роботу відладчика, виберіть "Debug" і "Stop Debugging".

Аналіз дампа пам'яті за допомогою BlueScreenView

Для аналізу різних помилок та BSoD підійде і програма BlueScreenView, яка має простий інтерфейс, тому проблем із освоєнням виникнути не повинно.

Завантажте програму за вказаним вище посиланням і встановіть. Після запуску утиліти її потрібно налаштувати. Зайдіть до параметрів: «Налаштування» – « Додаткові параметри». Відкриється невелике віконце, в якому є кілька пунктів. У першому пункті потрібно вказати місцезнаходження дампів пам'яті. Зазвичай вони знаходяться на шляху C: WINDOWS Minidump. Тоді просто натисніть кнопку "За замовчуванням".


Що можна побачити у програмі? У нас є пункти меню, частина вікна з назвами файлів дампів та друга частина вікна – вміст дампів пам'яті.


Як я казав на початку статті, дампи можуть зберігати драйвера, сам скріншот «екрана смерті» та інша корисна інформація, яка нам може стати в нагоді.

Отже, у першій частині вікна, де файли дампів, вибираємо необхідний нам дамп пам'яті. У наступній частині вікна дивимось на вміст. Червоним кольором позначені драйвера, що знаходилися в стеку пам'яті. Саме вони і є причиною синього екрану смерті.

В інтернеті можна знайти все про код помилки та драйвер, який може бути виною BSoD. Для цього натискаємо "Файл", а потім "Знайти в Google код помилки + Драйвер".


Можна зробити лише драйверів, які були на момент появи помилки. Для цього потрібно натиснути "Налаштування" - "Режим нижнього вікна" - "Тільки драйвера, знайдені в креш-стеку". Або натиснути клавішу F7.

Щоб показати скріншот BSoD, натисніть клавішу F8.

Для показу всіх драйверів та файлів натискаємо F6.

Ну от, власне, і все. Тепер ви знаєте, як дізнатися про проблему «Синього екрану смерті», і в разі чого знайти рішення в інтернеті або на цьому сайті. Можете пропонувати свої коди помилок, а я постараюся писати для кожної статті щодо вирішення проблеми.

Також не забувайте ставити запитання у коментарях.

Продовжу розповім про синій екран смерті, розпочатий у .

Отже, якщо комп'ютер раптово перезавантажується або зависає, а синій екран смерті не з'являється або з'являється на секунду, то все одно інформацію про причини збою можна відновити.

Справа в тому, що операційна система в момент збою зберігає вміст оперативної пам'яті в так званому дамп-файл(має розширення .dmp). Надалі файл дампа можна буде проаналізувати і отримати ту ж саму інформацію, що і на синьому екрані і навіть трохи більше.

Але створення дамп може бути відключено в системі, тому варто переконатися, що, по-перше, система створює дампи при збоях, а, по-друге, варто дізнатися місце на диску, куди вони зберігаються.

Для цього потрібно зайти до розділу Система.

У Windows 10 це можна зробити через пошук, а в попередніх версіяхопераційної системи через Панель управління.

Тут повинен бути включений запис подій у системний журнал, а щоб комп'ютер автоматично не перезавантажувався і відображав нам вміст синього екрана смерті, потрібно скасувати автоматичне перезавантаження, якщо воно було включене.

Також тут відображається шлях до дамп - ми бачимо, що дамп зберігається в папку %SystemRoot% - це позначення папки Windows.

Також тут можна вибрати "малий дамп пам'яті", якого буде цілком достатньо для пошуку кодів помилки.

Отже, система вилетіла у синій екран смерті, після чого було створено дамп пам'яті.

Для аналізу дампів існують спеціальні програмиі однією з найпопулярніших є утиліта BlueScreenView.

Програма дуже проста у використанні і не потребує встановлення – завантажуємо з офіційного сайту та розархівуємо. При цьому з офіційного сайту можна завантажити файл, за допомогою якого можна русифікувати програму. Для цього даний файлнеобхідно буде помістити в папку з розархівованою програмою.

Якщо після запуску в програмі не відображаються дампи, хоча система зривалася в синій екран смерті, то варто зайти в налаштування програми і переконатися, що шлях до дамп пам'яті вказано правильно, тобто він повинен бути таким же, як і в налаштуваннях системи.

Після цього потрібно оновити інформацію у вікні програми, і всі створені в системі дампи відобразяться. Якщо дампів кілька, то орієнтуємося за датою збою. Вибираємо потрібний дамп, а потім з'явиться Детальна інформаціяпо ньому.

Тут виводиться назва помилки, її STOP-код із параметрами і якщо причиною став драйвер, то у відповідному полі ми виявимо його назву.

Також у нижній частині вікна програми рожевим виділятимуться файли, які також могли стати причиною збою. Прийде по порядку розбиратися з кожним із них. Алгоритм тут аналогічний розглянутому в минулому дописі - шукаємо рішення в інтернеті, а як пошуковий ключ використовуємо назву файлу або код помилки.

При цьому не обов'язково вручну вводити дані в пошукову систему. Якщо клацнути правою кнопкою миші рядком дампа, то з контекстного менюможна вибрати пункт, який дозволить знайти в Гуглі опис саме цієї проблеми.

Можна вибрати пошук у Google за кодом помилки, за кодом помилки та назвою драйвера або за кодом помилки та параметром.

Також за допомогою цієї утиліти можна швидко знайти місцезнаходження проблемного файлу на диску.

Іноді буває, що файл, що викликав проблему, належить до якоїсь програми або гри. За розташуванням файлу на диску можна швидко визначити, до якої саме програми або гри він відноситься.

Ну і варто знати, що чистильники начебто видаляють дампи пам'яті, тому якщо ви користуєтеся подібними програмами, то на час виявлення причини появи синього екрану смерті варто утриматися від їх використання.

І останнє питання, на яке я відповім у рамках цієї нотатки — що робити, якщо комп'ютер більше не запускається після появи синього екрана?Тобто комп'ютер зависає або постійно перевантажується, а отже, немає можливості проаналізувати дамп пам'яті.

Відповідь логічна і проста - потрібно створити завантажувальну флешку, за допомогою якої "витягнути" файл дампа з жорсткого диската проаналізувати його на іншому комп'ютері. Для цього завантажуємося з флешки та на жорсткому диску комп'ютера у папці Windowsабо в підпапці minidumpзнаходимо файл дампа, який копіюємо на флешку. Потім на іншому комп'ютері за допомогою утиліти BlueScreenViewаналізуємо дамп, як було розказано в цій статті.

У Windows 8 Microsoft представила новий дамп пам'яті - опція автоматичного дампа пам'яті. Цей параметр в операційній системі встановлено за промовчанням. У Windows 10 ввели новий тип файлу дампа – активний дамп пам'яті. Для тих, хто не знає, у Windows 7 у нас є малий дамп, дамп ядра та повний дамп пам'яті. Ви можете здивуватися, чому Microsoft вирішила створити цей новий параметрдамп пам'яті? За словами Роберта Сімпкінса, старшого інженера підтримки, автоматичний дамп пам'яті, може створити підтримку для сторінки системи у файлі конфігурації.
Система керування конфігурацією файлу підкачки відповідає за керування розміром файлу підкачки – це дозволяє уникнути зайвого запасу або розміру файлу підкачки. Ця опція введена в основному для ПК, які працюють на SSD-дисках, які зазвичай мають менший розмір, але величезну кількість оперативної пам'яті.

Параметри дампа пам'яті

Головна перевага "Автоматичний дамп пам'яті" полягає в тому, що це дозволить сеансу підсистеми в диспетчері процесів автоматично зменшити файл підкачування до розміру меншого, ніж розмір оперативної пам'яті. Для тих, хто не знає, сесія диспетчера підсистеми відповідає за ініціалізацію системи, середовище запуску служб та процесів, які необхідні для входу користувача до системи. Він в основному встановлює сторінку файлів у віртуальну пам'ятьта запускає процес winlogon.exe.

Якщо ви хочете змінити параметри автоматичного дампа пам'яті, як це можна зробити. Натисніть клавіші Windows + X та виберіть — Система. Далі натисніть кнопку «Додаткові параметри системи — Advance System Settings”.

Натисніть кнопку Додаткові параметри системи.

Тут ви можете побачити меню, що випадає, де написано “Додатково”.

Тут можна вибрати потрібний варіант. Пропоновані варіанти:

Жодних дампів пам'яті.
Невеликий дамп пам'яті.
Дамп пам'яті ядра.
Повний дамп пам'яті.
Автоматичний дамп пам'яті. Додані до Windows 8.
Активний дамп пам'яті. Додали до Windows 10.
Розташування файлу дампа пам'яті у файлі %SystemRoot%\MEMORY.DMP.

Якщо ви використовуєте SSD дисккраще залишити його на “Автоматичний дамп пам'яті”; але якщо ви потребуєте файл аварійного дампа, то краще встановити його на "малий дамп пам'яті", з ним ви можете, якщо ви хочете, відправити його комусь, щоб він міг глянути на нього.

У деяких випадках вам, можливо, потрібно збільшити розмір файлу підкачки більше, ніж оперативна пам'ять, щоб він міг відповідати повному дампу пам'яті. У таких випадках вам потрібно створити ключ реєстру:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

він називається "LastCrashTime".

Це автоматично збільшить розмір файлу підкачування. Щоб зменшити його, пізніше ви можете просто видалити цей ключ.

У Windows 10 ввели новий файлдампа активний дамп пам'яті. Він містить лише найнеобхідніше і, отже, він меншого розміру.

Я не маю можливості протестувати його, але я створив цей ключ і виконав моніторинг розміру файлу підкачки. Я знаю, що рано чи пізно я отримаю критичну помилку. Тоді я перевірятиму його.

Ви можете проаналізувати дамп пам'яті Windows.dmp файлів за допомогою WhoCrashed. Утиліта WhoCrashed Home безкоштовна, в ній представлені драйвери, які були врізані на ваш комп'ютер за допомогою одного кліка. У більшості випадків вона може визначити несправний драйвер, який завдають страждання вашому комп'ютеру. Це краш-дамп аналізу системи, дампи пам'яті, і тут представлена ​​вся зібрана інформація у доступній формі.

Як правило, набір налагоджувальних інструментів відкриває аварійний дамп аналізу. За допомогою цієї утиліти вам не потрібні жодні знання та навички налагодження, щоб з'ясувати, які драйвери викликають проблеми на вашому комп'ютері.

WhoCrashed покладається пакет налагодження (програми windbg) від Microsoft. Якщо цей пакет не встановлений, WhoCrashed сама завантажуватиме і автоматично витягне цей пакет для вас. Просто запустіть програму та натисніть кнопку Аналіз. Коли у вас є WhoCrashed встановлений в системі і, якщо він несподівано скидає або закривається, програма дасть вам знати, якщо аварійний дамп увімкнено на вашому комп'ютері, і вона пропонуватиме Вам пропозиції про те, як їх включити.

Дана невелика замітка ставить за мету показати, яким же чином можна сконфігурувати систему, щоб отримати в своє розпорядження аварійний дамп пам'яті Windowsтобто дамп, який може бути створений у разі виникнення критичного збою, що характеризується появою синього екрану смерті (BSOD). Що ж таке дамп взагалі, для чого він нам потрібний і що являє собою, які проблеми він покликаний вирішити і яку інформацію містить в собі?

Дамп пам'яті (memory dump) - вміст робочої пам'яті процесу, ядра або всієї операційної системи, що включає, крім робочих областей, додаткову інформаціюпро стан регістрів процесора, вміст стека та інші службові структури.

Для чого нам може знадобитися цей вміст, тобто дамп пам'яті Windows? Мабуть, найчастіше дамп пам'яті використовується вивчення причин виникнення системного збою (), який став причиною повного зупинки операційної системи. Крім того, стан пам'яті може використовуватися і для інших цілей. Немаловажний і той факт, що дамп пам'яті – це буквально єдиний спосіботримання інформації про будь-який збій! А зняття (отримання) дампа пам'яті системи - це, власне, єдиний точний спосіб отримання миттєвого відбитка (копії) вмісту фізичної пам'яті системи.

Чим точніше вміст дампи відображатиме стан пам'яті в момент збою, тим докладніше ми зможемо проаналізувати аварійну ситуацію. Тому вкрай важливо отримати саме актуальну копію фізичної пам'яті системи в певний момент часу, що безпосередньо передує збою. А єдиний спосіб зробити це – створити повний аварійний дамп пам'яті. Причина досить тривіальна - коли відбувається створення аварійного дампа пам'яті системи, чи в результаті збою, чи внаслідок штучно змодельованої ситуації, система в цей момент отримання управління аварійними функціями (KeBugCheckEx) перебуває в абсолютно незмінному (статичному) стані, тому між моментом виникнення збою та моментом закінчення запису даних на носій ніщо не змінює вміст фізичної пам'яті, і у оригінальному стані записується на диск. Ну це в теорії, а в житті зрідка, але трапляються ситуації, що через несправні апаратні компоненти, сам дамп пам'яті може бути пошкоджений, або в процесі запису дампа станція може підвиснути.

Переважна більшість випадків, з моменту початку процесу створення аварійного дампа пам'яті, і до моменту завершення запису вмісту пам'яті на диск, інформація в пам'яті залишається незмінною.

Теоретично, статичність (незмінність) "відбитка" пам'яті пояснюється тим, що коли викликається функція KeBugCheckEx, що виводить на екран інформацію про збій і процес створення дампи пам'яті, що стартує, система вже повністю зупинена і вміст фізичної пам'яті записано в блоки, займані на диску файлом підкачки, після цього, вже в процесі подальшого завантаження операційної системи воно скидається у файл на системному носії. Ну а практично один раз спостерігав ситуацію, коли боїться материнська платане давала зберегти дамп пам'яті: а) підвисаючи в процесі роботи логіки збереження дампа (процес не доходив до 100%); Тому, незважаючи на те, що система в момент створення дампи пам'яті вже повністю зупинена, і працює тільки аварійний код, збійне залізо може вносити свої корективи в будь-яку логіку на будь-якому етапі функціонування.
Традиційно на початковому етапі для збереження дампа пам'яті Windows використовуються блоки диска, виділені файлу підкачки (pagefile). Потім, після появи синього екрана та перезавантаження, дані переміщаються в окремий файл, а потім файл перейменовується за шаблоном, що залежить від типу дампа. Однак, починаючи з версії Windows Vista, подібний стан речей можна змінити, тепер користувачу дана можливість зберігати виділений дамп без участі файлу підкачки, поміщаючи інформацію про збій у тимчасовий файл. Зроблено це для того, щоб унеможливити помилки конфігурації, пов'язані з неправильним налаштуванням розміру та положення файлу підкачки, що часто призводило до проблем у процесі збереження дампа пам'яті.
Давайте подивимося, які ж різновиди дамп дозволяє нам створювати операційна система Windows:

  • Дамп пам'яті процесу (додатки);
  • Дамп пам'яті ядра;
  • Повний дамп пам'яті (Дамп доступної частини фізичної пам'яті системи).

Усі аварійні дампи можна розділити на дві основні категорії:

  • Аварійні дампи з інформацією про виключення, що виникло. Зазвичай створюються в автоматичному режимі, коли у додатку/ядрі виникає необроблений виняток (unhandled exception) і, може бути викликаний системний (вбудований) отладчик. У цьому випадку інформація про виключення записується в дамп, що полегшує визначення типу виключення та місця виникнення при подальшому аналізі.
  • Аварійні дампи без інформації про виключення. Зазвичай створюються користувачем вручну, коли необхідно створити миттєвий знімок процесу для подальшого аналізу. Аналіз цей має на увазі не визначення типу виключення, оскільки ніякого винятку і не виникало, а аналіз зовсім іншого роду, наприклад, вивчення структур даних процесу та інше.

Конфігурація дампа пам'яті ядра

Ви повинні бути залогінені під адміністративною обліковим записомдля виконання дій, що описуються в цьому розділі.

Давайте безпосередньо перейдемо до налаштування параметрів аварійного дампа пам'яті Windows. Для початку нам необхідно зайти у вікно властивостей системи одним і наведених способів:

  1. Натисніть правою кнопкою миші на піктограмі "Мій комп'ютер" - "Властивості" - "Додаткові параметри системи" - "Додатково".
  2. Кнопка "Пуск" - "Панель керування" - "Система" - "Додаткові параметри системи" - "Додатково".
  3. Поєднання клавіш "Windows" + "Pause" - "Додаткові параметри системи" - "Додатково".

  4. control system.cpl,3
  5. Виконати у командному рядку(cmd):
    SystempropertiesAdvanced

Результатом описаних дій є відкриття вікна "Властивості системи" та вибір вкладки "Додатково":

Після цього в розділі "Завантаження та відновлення" ми натискаємо вибираємо "Параметри" і цим відкриваємо нове вікно під назвою "Завантаження та відновлення":

Усі параметри аварійного дампа згруповані у блоці параметрів під назвою "Відмова системи". У цьому блоці ми можемо задати такі параметри:

  1. Записати події до системного журналу.
  2. Виконати автоматичне перезавантаження.
  3. Запис налагоджувальної інформації.
  4. Дампа файл.
  5. Замінювати існуючий файл дампа.

Як бачите, багато параметрів зі списку досить тривіальні та прості у розумінні. Однак, я хотів би докладніше зупинитися на параметрі "Файл дампа". Параметр представлений у вигляді спадаючого списку, і має чотири можливі значення:

Малий дамп пам'яті (Small memory dump)

Малий дамп пам'яті (мінідамп, minidump) – це файл, який містить найменший обсяг інформації про збій. Найменший з усіх можливих дампів пам'яті. Незважаючи на очевидні мінуси, найчастіше саме мінідампи використовуються як інформація про збій для передачі постачальнику сторонніх драйверів для подальшого вивчення.
Склад:

  • Повідомлення про помилку.
  • Значення помилки.
  • Параметри помилки.
  • Контекст процесора (PRCB), у якому стався збій.
  • Відомості про процес та контекст ядра (EPROCESS) для процесу, що є причиною збою, з усіма його потоками.
  • Відомості про процес та контекст ядра (ETHREAD) для потоку, що є причиною збою.
  • Стек режиму ядра для потоку, що спричинив збій.
  • Список завантажених драйверів.

Розміщення: %SystemRoot%\Minidump\MMDDYY-XXXXX-NN.dmp. Де MMDDYY – місяць, день та рік відповідно, NN – порядковий номер дампа.
Об'єм: Розмір залежить від розрядності операційної системи: потрібно всього 128 кілобайт для 32-розрядної і 256 кілобайт для 64-розрядної ОС у файлі підкачки (або у файлі, вказаному в DedicatedDumpFile). Оскільки виставити настільки малий розмір ми зможемо, то округляємо до 1 мегабайта.

Дамп пам'яті ядра (Kernel memory dump)

Даний тип дампа містить копію всієї пам'яті ядра на момент збою.
Склад:

  • Список виконуваних процесів.
  • Стан потоку.
  • Сторінки пам'яті режиму ядра, що знаходяться у фізичній пам'яті під час збою: пам'ять драйверів режиму ядра та пам'ять програм режиму ядра.
  • Пам'ять апаратно-залежного рівня (HAL).
  • Список завантажених драйверів.

У дампі пам'яті ядра відсутні нерозподілені сторінки пам'яті та сторінки режиму користувача. Погодьтеся, адже малоймовірно, що сторінки процесу режиму користувача будуть нам цікаві при системному збої (BugCheck), оскільки зазвичай системний збій ініціюється кодом режиму ядра.

Об'єм: Варіюється залежно від розміру адресного простору ядра, виділеної операційною системою та кількості драйверів режиму ядра. Зазвичай потрібно близько третини обсягу фізичної пам'яті у файлі підкачки (або у файлі, вказаному в DedicatedDumpFile). Може змінюватись.

Повний дамп пам'яті (Complete memory dump)

Повний дамп пам'яті містить копію фізичної пам'яті (ОЗУ, RAM) в момент збою. Відповідно, до файлу потрапляє і весь вміст пам'яті системи. Це одночасно перевага і головний недолік, оскільки його розмір на деяких серверах з великим обсягом ОЗУ може виявитися суттєвим.
Склад:

  • Усі сторінки "видимої" фізичної пам'яті. Це практично вся пам'ять системи, за винятком областей, що використовуються апаратною частиною: BIOS, простір PCI та ін.
  • Дані процесів, які виконувались у системі на момент збою.
  • Сторінки фізичної пам'яті, які не відображені на віртуальний адресний простір, але можуть допомогти у вивченні причин збою.

У повний дамп пам'яті не включаються, за замовчуванням, області фізичної пам'яті, що використовується BIOS.
Розміщення: %SystemRoot%\MEMORY.DMP . Попередній дамп перезаписується.
Об'єм: У файлі підкачки (або у файлі, вказаному в DedicatedDumpFile) потрібен обсяг, що дорівнює розміру фізичної пам'яті + 257 мегабайт (ці 257 Мб діляться на якийсь заголовок + дані драйверів). Насправді ж, у деяких ОС, нижній поріг файлу підкачки можна виставити точно значення розміру фізичної пам'яті.

Автоматичний дамп пам'яті (Automatic memory dump)

Починаючи з Windows 8/Windows Server 2012, в систему введено новий тип дампа під назвою "Автоматичний дамп пам'яті", який встановлюється за замовчуванням. І тут система сама вирішує, який дамп пам'яті записати у ситуації тієї чи іншої збою. Причому логіка вибору залежить багатьох критеріїв, зокрема від частоти " падіння " операційної системи.

Після зміни конфігурації дампа пам'яті Windows може знадобитися перезавантажити комп'ютер.

Параметри реєстру

Розділ реєстру, який визначає параметри аварійного дампа:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

Параметри:

Параметр Тип Опис
AutoReboot REG_DWORD Увімкнення/вимкнення автоматичного перезавантаження у разі виникнення BSOD.
CrashDumpEnabled REG_DWORD Вид створюваної дампи.
  • 0 – не створювати дамп пам'яті;
  • 1 – повний дамп пам'яті;
  • 2 – дамп пам'яті ядра;
  • 3 – малий дамп пам'яті;
DumpFile REG_EXPAND_SZ Шлях та назва дампа пам'яті ядра та повного дампа пам'яті.
DumpFilters REG_MULTI_SZ Драйвер-фільтр у стеку драйверів дампа пам'яті. Дозволяє додавати новий функціонал на етапі створення аварійних дампів. Наприклад, шифрування вмісту дампа. Змінювати значення не рекомендується.
LogEvent REG_DWORD Запис події у системний журнал.
MinidumpDir REG_EZPAND_SZ Шлях та назва малого дампа пам'яті.
MinidumpsCount REG_DWORD Максимальна кількість малих дампів пам'яті. При перевищенні починають затиратися старіші версії.
Overwrite REG_DWORD Замінювати існуючий файл дампа. Тільки для дампа пам'яті ядра та повного дампа пам'яті.
IgnorePagefileSize REG_DWORD Ігнорує стандартний файл підкачки як місце для тимчасового (проміжного) зберігання пам'яті. Вказує необхідність записати дамп пам'яті в окремий файл. Використовується разом із опцією DedicatedDumpFile.
DedicatedDumpFile REG_EZPAND_SZ Шлях та назва тимчасового альтернативного файлу для запису дампи пам'яті. У другому проході дані все одно будуть переміщені DumpFile/MinidumpDir.

Ручне створення дампа пам'яті

Вище ми описували налаштування для автоматичного створення аварійних дамп системи у разі виникнення критичної помилки, тобто необроблюваного виключення в коді ядра. Але ж у реального життяКрім падіння операційної системи, існують ситуації, коли необхідно отримати дамп пам'яті системи в конкретний момент часу. Як бути у цьому випадку? Існують методи отримання миттєвої копії всієї фізичної пам'яті, наприклад, за допомогою команди.dump у відладчиках WinDbg/LiveKD. LiveKD - програма, що дозволяє запускати відладчик ядра Kd у системі, що функціонує в локальному режимі. У відладчику WinDbg також є така можливість. Однак метод отримання дампа "на льоту" не точний, оскільки дамп створюється в цьому випадку "суперечливий", так як для створення дампа потрібен час, а у разі використання відладчика режиму ядра система продовжує працювати та вносити зміни до сторінок пам'яті.

Всі Windows-системи при виявленні фатальної помилки роблять аварійний дамп (знімок) вмісту оперативної пам'яті та зберігає його на жорсткий диск. Існують три типи дампи пам'яті:

Повний дамп пам'яті зберігає весь вміст оперативної пам'яті. Розмір знімка дорівнює розміру оперативної пам'яті + 1 Мб (заголовок). Використовується дуже рідко, оскільки в системах з великим обсягом пам'яті розмір дампи буде занадто великим.

Дамп пам'яті ядра – зберігає інформацію оперативної пам'яті, що стосується лише режиму ядра. Інформація режиму користувача не зберігається, оскільки не несе в собі інформації про причину краху системи. Об'єм файлу дампа залежить від розміру оперативної пам'яті та варіюється від 50 Мб (для систем із 128 Мб оперативної пам'яті) до 800 Мб (для систем із 8 Гб оперативної пам'яті).

Малий дамп пам'яті (міні дамп) містить досить невелику кількість інформації: код помилки з параметрами, список драйверів завантажених в оперативну пам'ять на момент краху системи і т.д., але цих відомостей достатньо, для визначення збійного драйвера. Ще однією перевагою цього виду дампа є невеликий розмір файлу.

Налаштування системи

Для виявлення драйвера, що викликав, нам достатньо буде використовувати малий дамп пам'яті. Для того, щоб система при краху зберігала міні дамп необхідно виконати такі дії:

Для Windows XP Для Windows 7
  1. Мій комп'ютер Властивості
  2. Перейдіть на вкладку Додатково;
  3. Параметри;
  4. В полі Запис налагоджувальної інформаціїобираємо Малий дамп пам'яті (64 Кб).
  1. Правою клавішею миші натиснути на піктограму Комп'ютерз контекстного меню виберіть Властивості(або комбінація клавіш Win + Pause);
  2. У лівому меню клацаємо на пункт Додаткові параметри системи;
  3. Перейдіть на вкладку Додатково;
  4. У полі Завантаження та відновлення необхідно натиснути кнопку Параметри;
  5. В полі Запис налагоджувальної інформаціїобираємо Малий дамп пам'яті (128 Кб).

Зробивши всі маніпуляції, після кожного BSoD у папці C:\WINDOWS\Minidump буде зберігатися файл з розширенням.dmp. Раджу ознайомитись із матеріалом " ". Також можна встановити галочку на “ Замінити існуючий файл дампа”. У цьому випадку кожен новий аварійний дамп буде записуватися поверх старого. Я не раджу включати цю опцію.

Аналіз аварійної дампи пам'яті за допомогою програми BlueScreenView

Отже, після появи синього екрану смерті, система зберегла новий аварійний дамп пам'яті. Для аналізу дампа рекомендую використовувати програму BlueScreenView. Її можна безкоштовно скачати. Програма досить зручна та має інтуїтивний інтерфейс. Після її встановлення перше, що потрібно зробити - це вказати місце зберігання дампів пам'яті в системі. Для цього необхідно зайти до пункту меню “ Options” та вибрати “ AdvancedOptions”. Вибираємо радіокнопку “ LoadfromthefollowingMini Dumpfolder” та вказуємо папку, в якій зберігаються дампи. Якщо файли зберігаються в папці C:\WINDOWS\Minidump можна натисканням кнопки “ Default”. Натискаємо OK та потрапляємо в інтерфейс програми.

Програма складається із трьох основних блоків:

  1. Блок головного меню та панель управління;
  2. Блок списку аварійних дампів пам'яті;
  3. Залежно від вибраних параметрів може містити:
  • список усіх драйверів, що знаходяться в оперативній пам'яті до появи синього екрана (за замовчуванням);
  • список драйверів, що знаходяться в стеку оперативної пам'яті;
  • скріншот BSoD;
  • та інші значення, які ми не будемо використовувати.

У блоці списку дамп пам'яті (на малюнку позначений цифрою 2) вибираємо дамп, що цікавить нас, і дивимося на список драйверів, які були завантажені в оперативну пам'ять (на малюнку позначений цифрою 3). Рожевим кольором забарвлені драйвера, які перебували у стеку пам'яті. Вони і є причиною появи BSoD. Далі переходьте в Головне меню драйвера, визначайте, до якого пристрою чи програми вони належать. В першу чергу звертайте увагу на не системні файлиадже системні файли в будь-якому випадку завантажені в оперативній пам'яті. Легко зрозуміти, що зображення збійним драйвером є myfault.sys. Скажу, що ця програма була спеціально запущена для виклику помилок Stop. Після визначення збійного драйвера необхідно його або оновити, або видалити з системи.

Для того, щоб програма показувала список драйверів, що знаходяться в стеку пам'яті під час виникнення BSoD, необхідно зайти в пункт меню “ Options” клацаємо на меню “ LowerPaneMode” і вибираємо “ OnlyDriversFoundInStack” (або натисніть клавішу F7), а для показу скріншота помилки вибираємо “ BlueScreeninXPStyle” (F8). Щоб повернутися до списку всіх драйверів, необхідно вибрати пункт “ AllDrivers” (F6).




Top