Контакти

Що таке dump файл. Що таке дамп пам'яті? Аналіз дамп файлу за допомогою Microsoft Kernel Debugger

щоб виправити синій екран смертінеобхідно виявити причину його появи. Для цього потрібно проаналізувати аварійний файл дампа пам'яті. Аналіз аварійного дампа можна провести різними способами. Про це якраз і поговоримо в цій статті.

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

Аналіз дамп файлу за допомогою Microsoft Kernel Debugger.

Microsoft Kernel Debugger- спеціальна утиліта для аналізу креш дампов. Завантажити саму утиліту, а також необхідні для її роботи компоненти можна з сайту Microsoft- Debugging tools. версія пакета Debugging Tools for Windowsповинна відповідати розрядності операційної системи. Детально про те де і як завантажити цю утиліту писав.
Разом з самим отладчиком необхідно ще скачати набір налагоджувальних символів - Debugging Symbols. Набір символів, також різниться для кожної версії Windows, включаючи і по розрядності. Таким чином, для 32-х розрядної Windows 7 необхідно завантажити пакет символів Windows 7 x32, А для 64-х бітної Windows 7 набір символів Windows 7 x64. Таким же чином потрібно вибирати набір символів і для інших версій Windows (widows 10, XP і т.д.). Потрібний набір символів також можна скачати в самому отладчике, але про це нижче.
Після установки утиліти і набору налагоджувальних символів, можна запустити сам відладчик. Після запуску необхідно в його настройках вказати йому шлях до налагоджувальних символів. Для цього:
Натисніть на кнопку File ⇒ Symbol File Path ...
Далі натисніть кнопку Browse і вкажіть папку куди зберегли набір символів.
завантажити саму нову версіюсимволів можна за допомогою самої утиліти. Для цього в поле File ⇒ Symbol File Path ... введіть:
SRV * C: \ symbols * http: //msdl.microsoft.com/download/symbols

Далі натисніть на File ⇒ Save workspace і потім натисніть на ОК.
Таким чином утиліта запросить інформацію про налагоджувальних символах через інтернет безпосередньо з сервера Microsoft.
Для того, щоб приступити до аналізу натисніть на File> Open Crash Dump ... і вкажіть потрібний файл дампа пам'яті (малий дамп пам'яті).
Система проведе аналіз дампа і за результатами видасть можливу причину помилки.

Клікнувши по посиланню ! Analyse-vвідкриється більш розширена інформація помилково.
Завершити налагодження можна за допомогою пункту меню Debug > Stop Debugging.

Аналіз файлу дампа з BlueScreenView

BlueScreenViewце безкоштовна утилітадля аналізу файлу малого аварійного дампа пам'яті. Дана утилітамає підтримку російської мови. Основним плюсом даної програми є те, що для її роботи не потрібно завантажувати налагоджувальні символи. Це робить цю утиліту повністю автономної і незалежної. Ще одним плюсом даної програми є наявність портабельной версії, тобто версії, яку не потрібно встановлювати в систему. Автором програми є Nier Sofer. Завантажити можна з офіційного сайту учасника. Портабельная версію програми можна завантажити за посиланням на офіційній сторінці, в назві якого, в дужках вказано in Zip file.
При скачуванні важливо враховувати розрядність вашої ОС.
Обстеживши трохи нижче можна скачати файл русифікації - BlueScreenView_lng.ini, який потрібно просто закинути в папку з самою програмою. Я підготував для скачування програму з уже налаштованим мовою. Ось прямі посилання:

А тепер безпосередньо про процедуру аналізу.

Як провести аналіз файлу дампа з BlueScreenView?

Після запуску програма відразу сканує стандартну директорію зберігання файлу дампа -% SystemRoot% \ Minidump. Директорію можна змінити в додаткових параметрах програми. Інтерфейс вікна програми умовно можна поділити на 3 області:

  • У верхній частині кнопок меню
  • Середня область зі списком файлів дампов
  • Нижня область зі списком драйверів


Дані аналізу виводяться в табличному вигляді. Перерахую найбільш важливі з стовпців середньої області интерфейсного вікна програми (в дужках найменування з англ. Версії):

  • Текст помилки (Bug Check String). Тут виводиться опис помилки відповідно до класифікації MicroSoft. У нашому прикладі це DRIVER_IRQL_NOT_LESS_OR_EQUAL.
  • Код помилки (Bug Check Code). Виводиться СТОП-код помилки - 0x000000d1
  • Драйвер причини (Caused By Driver). Відображає найменування драйвера або модуля, який найімовірніше викликав помилку. Зауважте, це 100% винуватець помилки, а лише ймовірний. У нашому прикладі це E1G6032E.sys
  • Адреса причини (Caused By Address). Відображає драйвер і відразу після адреса інструкцій, що викликали збій. У нас це E1G6032E.sys + 9ef530 / li>
  • Адреса аварії (Crash Address). Адреса за яким трапилася помилка. У нашому випадку ntoskrnl.exe + 1509a0.

Тепер перерахую найбільш важливі стовпці з нижньої області:

  • Файл (File name). Вказується найменування драйвера або модуля
  • Адреса в стеці (Address In Stack). Виводиться адреса пам'яті драйвера з стека пам'яті.
  • Опис файлу (File Description).
  • Версія файлу (File Version). Відображається версія файлу драйвера.

Для аналізу виділяємо потрібний файлдампа в середній області вікна утиліти. При виділенні нижня область відразу заповнюється даними. Дивимося в таблиці дані з основних стовпців, які я навів вище. У нижній області вікна ймовірні проблемні драйвера або модулі виділяються червоним кольором. Рідко, бувають випадки, коли зазначений програмоюв середній області вікна драйвер не є джерелом BSOD помилки. У таких випадках, серед підсвічуються червоним кольором нижче, проблемних драйверів, напевно присутній дійсне джерело синього екранусмерті. У моєму випадку це: E1G6032E.sys і ntoskrnl.exe. До речі, обидва є досить таки поширеними причинами BSOD.
Якщо знайдені програмою джерела помилки вам ні про що не говорять, то можна просто в пошуковику ввести найменування проблемних драйверів і там напевно знайдете як їх побороти.
Для більш точного визначення проблемних драйверів і модулів можна скористатися кількома способами аналізу. Благо в даній статті ми розібрали два найбільш популярних. Слідкуйте за публікаціями і надалі вийде ще стаття про аналіз дампов.

Всі 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).

У 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). Як правило, ця фатальна помилка виникає або через несправність драйверів, обладнання (частіше при завантаженні ОС) або через дії вірусів і антивірусів.

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

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

Що таке дамп

  • dump (англ.) - купа сміття; звалище; діра; нетрі.
  • dump (memory dump) - 1) дамп, висновок вмісту оперативної пам'яті на друк або екран; 2) «знімок» оперативної пам'яті; дані, одержувані в результаті демпінгу; 3) аварійне зняття, вимикання, скидання.
  • dumping - дампинг, зняття дампа.

Налаштування для збереження дампа пам'яті зберігаються в системному реєстрі Windows.

Інформація про дампі пам'яті в системному реєстрі:

У розділі Реєстру Windows аварійний дамп пам'яті визначається наступними параметрами:

- REG_DWORD-параметр AutoReboot зі значенням 0 × 1 (опція Виконати автоматичну перезавантаженнядопоміжного вікна Завантаження і відновлення діалогового вікна Властивості системи);

- REG_DWORD-параметр CrashDumpEnabled зі значенням 0 × 0, якщо дамп пам'яті не створюється; 0 × 1 - Повний дамп пам'яті; 0 × 2 - Дамп пам'яті ядра; 0 × 3 - Малий дамп пам'яті (64 Кб);

- REG_EXPAND_SZ-параметр DumpFile зі значенням за замовчуванням% SystemRoot% \ MEMORY.DMP (місце зберігання файлу дампа);

- REG_DWORD-параметр LogEvent зі значенням за замовчуванням 0 × 1 (опція Записати подія в системний журнал вікна Завантаження і відновлення);

- REG_EXPAND_SZ-параметр MinidumpDir зі значенням за замовчуванням% SystemRoot% \ Minidump (опція Папка малого дампа вікна Завантаження і відновлення);

- REG_DWORD-параметр Overwrite зі значенням за замовчуванням 0 × 1 (опція Замінювати існуючий файл дампа вікна Завантаження і відновлення);

- REG_DWORD-параметр SendAlert зі значенням за замовчуванням 0 × 1 (опція Відправити адміністративне оповіщення вікна Завантаження і відновлення).

Як система створює файл аварійного дампа пам'яті

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

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

Спочатку ядро ​​системи перевіряє стан кожного компонента, задіяного в процесі збереження дампа. Це робиться для того, щоб при прямій записи в сектори диска не пошкодити дані, що лежать поза сторінкового файлу. Розмір сторінкового файлу повинен бути на 1 МБ більше розміру фізичної пам'яті, тому що під час запису інформації в дамп створюється заголовок, в якому містяться сигнатура аварійного дампа і значення декількох найважливіших змінних ядра системи. Тема займає менше 1 МБ, але операційна система може збільшувати (або зменшувати) розмір файлу підкачки не менше ніж на 1 МБ.

Після завантаження системи Session Manager (Диспетчер сеансу Windows NT; дисковий адресу - \ WINDOWS \ system32 \ smss.exe) ініціалізує сторінкові файли системи, використовуючи для створення кожного файлу власну функцію NtCreatePagingFile. NtCreatePagingFile визначає, чи існує ініціалізіруемих сторінковий файл, і якщо так, то чи є в ньому заголовок дампа. Якщо заголовок є, то NtCreatePagingFile посилає в Session Manager спеціальний код. Після цього Session Manager запускає процес Winlogon (Програма входу в систему Windows NT; дисковий адресу - \ WINDOWS \ system32 \ winlogon.exe), який сповіщається про існування аварійного дампа. Winlogon запускає програму SaveDump (Програма збереження копії пам'яті Windows NT; дисковий адресу - \ WINDOWS \ system32 \ savedump.exe), яка аналізує заголовок дампа і визначає подальші дії в аварійній ситуації.

Якщо заголовок вказує на існування дампа, то SaveDump копіює дані з сторінкового файлу в файл аварійного дампа, ім'я якого задано REG_EXPAND_SZ-параметром DumpFile розділу Реєстру. Поки SaveDump переписує файл дампа, операційна система не задіє ту частину сторінкового файлу, в якій міститься аварійний дамп. У цей час обсяг віртуальної пам'яті, Доступною для системи і додатків, зменшується на розмір дампа (при цьому на екрані можуть з'явитися повідомлення, що вказують на брак віртуальної пам'яті). Потім SaveDump інформує диспетчер пам'яті про завершення збереження дампа, і той вивільняє ту частину сторінкового файлу, в якій зберігається дамп, для загального користування.

Зберігши файл дампа, програма SaveDump робить запис про створення аварійного дампа в журналі подій Система, наприклад: «Комп'ютер був перезавантажений після критичної помилки: 0x100000d1 (0xc84d90a6, 0 × 00000010, 0 × 00000000, 0xc84d90a6). Копія пам'яті збережена: C: \ WINDOWS \ Minidump \ Mini060309-01.dmp ».

Якщо включена опція Відправити адміністративне оповіщення, то SaveDump відправляє оповіщення адміністратору.

різновиди дампов

  • Повний дамп пам'ятізаписує весь вміст системної пам'ятіпри виникненні непереборної помилки. Для цього варіанту необхідно мати на завантажувальному томі файл підкачування, розмір якого дорівнює обсягу всієї фізичної оперативної пам'яті плюс 1 МБ. За замовчуванням повний дамп пам'яті записується в файл% SystemRoot% \ Memory.dmp. При виникненні нової помилки і створенні нового файлу повного дампа пам'яті (або дампа пам'яті ядра) Попереднє фотозамінюється (перезаписується). Параметр Повний дамп пам'яті недоступний на ПК, на яких встановлена ​​32-бітна операційна система і 2 або більше гігабайти оперативної пам'яті.

При виникненні нової помилки і створенні нового файлу повного дампа пам'яті попередній файл замінюється.

  • Дамп пам'яті ядразаписує тільки пам'ять ядра, завдяки чому процес запису даних в журнал при раптовій зупинці системи протікає швидше. Залежно від обсягу фізичної пам'яті ПК в цьому випадку для файлу підкачки потрібно від 50 до 800Мб або одна третина фізичної пам'яті комп'ютера на завантажувальному томі. За замовчуванням дамп пам'яті ядра записується в файл% SystemRoot% \ Memory.dmp.

Цей дамп не включає нерозподілений пам'ять або пам'ять, виділену для програм для користувача режиму. Він включає тільки пам'ять, виділену для ядра і апаратно-залежного рівня (HAL) в Windows 2000 і пізніших версіях системи, а також пам'ять, виділену для драйверів режиму ядра і інших програм режиму ядра. У більшості випадків такий дамп є найкращим варіантом. Він займає набагато менше місця в порівнянні з повним дампом пам'яті, при цьому виключаючи тільки ті сектори пам'яті, які, швидше за все, не пов'язані з помилкою.
При виникненні нової помилки і створенні нового файлу дампа пам'яті ядра попередній файл замінюється.

  • Малий дамп пам'ятізаписує найменший обсяг корисної інформації, Необхідних для визначення причини неполадок. Для створення малого дампа пам'яті необхідно, щоб розмір файлу підкачки становив як мінімум 2МБ на завантажувальному томі.

Файли малого дампа пам'яті містять такі відомості:

  • повідомлення про непереборний помилку, її параметри і інші дані;
  • список завантажених драйверів;
  • контекст процесора (PRCB), на якому стався збій;
  • відомості про процес і контекст ядра (EPROCESS) для процесу, що викликав помилку;
  • відомості про процес і контекст ядра (ETHREAD) для потоку, що викликав помилку;
  • стек викликів в режимі ядра для потоку, що викликав помилку.

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

при виникненні таку помилкуі створенні другого файлу малого дампа пам'яті попередній файл зберігається. кожному додатковому файлудається унікальне ім'я. Дата закодована в імені файлу. Наприклад, Mini051509-01.dmp - це перший файл дампа пам'яті, створений 15 травня 2009 г. Список всіх файлів малого дампа пам'яті зберігається в папці % SystemRoot% \ Minidump.

Операційна система Windows XP, безсумнівно, значно надійніше попередніх версій, - завдяки зусиллям як розробників Microsoft, так і розробників драйверів апаратного забезпечення, Так і розробників прикладного програмного забезпечення. Однак аварійні ситуації - всілякі збої і крахи системи - неминучі, і від того, чи володіє користувач ПК знаннями і навичками в їх усуненні, залежить, доведеться йому витратити кілька хвилин на пошук і усунення несправності (наприклад, на оновлення / налагодження драйвера або перевстановити прикладної програми, Що викликає системний збій), - або кілька годин на переустановку / настройку операційної системи і прикладного програмного забезпечення (що не гарантує відсутності збоїв і крахів надалі!).

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

Наведу приклади зі свого «сісадмінской» практики.

В локальної мережібез видимої причини( «Залізо» в порядку, відсутність вірусів гарантовано, користувачі - з «нормальними руками») «полягли» кілька робочих станцій з Windows XP SP1 / SP2 «на борту». Комп'ютери завантажити в нормальному режимі не вдавалося, - доходило до «Привітання» - і на перезавантаження до нескінченності. При цьому, в безпечному режимі ПК завантажувалися.

Вивчення дампов пам'яті дозволило виявити причину несправності: винуватцем виявився антивірус Касперського, точніше, свіжі антивірусні бази(Якщо ще точніше, то два модуля баз - base372c.avc, base032c.avc).

... Ще був такий випадок. На локальному ПК з Windows XP SP3 при спробі відкрити відеофайли форматов.avi і.mpeg відбувалася перезавантаження. Вивчення дампа пам'яті дозволило виявити причину несправності - файл nv4_disp.dll драйвера відеокарти NVIDIA GeForce 6600. Після оновлення драйвера несправність була усунена. Взагалі, драйвер nv4_disp.dll - один з найбільш нестабільних драйверів, який часто приводив до BSOD.

В обох зазначених випадках вивчення аварійного дампа пам'яті дозволило до мінімуму (кілька хвилин!) Звести час для діагностування та усунення несправності.

Аналіз дампа пам'яті

Для аналізу аварійних дампів пам'яті існує безліч програм, наприклад, DumpChk, Kanalyze, WinDbg.

Розглянемо аналіз аварійних дампів пам'яті за допомогою програми WinDbg (входить до складу Debugging Tools for Windows).

Установка засобів налагодження

  • відвідайте веб-вузол http://www.microsoft.com/whdc/devtools/debugging/default.mspx корпорації Microsoft;
  • завантажте Debugging Tools for Windows, наприклад, для 32-бітової версії Windows це можна зробити на сторінці Download the Debugging Tools for Windows;
  • після скачування запустите інсталяційний файл;
  • у вікні Debugging Tools for Windows Setup Wizard натисніть Next;
  • у вікні з ліцензійною угодою встановіть перемикач I agree -> Next;
  • в наступному вікні виберіть тип установки (за замовчуванням кошти налагодження встановлюються в папку \ Program Files \ Debugging Tools for Windows) -> Next -> Install -> Finish;
  • для інтерпретації файлів дампа пам'яті необхідно також завантажити пакет символів (Symbol Packages, так звані символьні файли, або файли символів налагодження) для своєї версії Windows, - зайдіть на сторінку Download Windows Symbol Packages;
  • виберіть свою версію Windows, скачайте і запустіть інсталяційний файл Symbol Packages;
  • у вікні з ліцензійною угодою натисніть Yes;
  • в наступному вікні виберіть папку для установки (за замовчуванням пропонується \ WINDOWS \ Symbols) -> OK -> Так;
  • у вікні Microsoft Windows Symbols з повідомленням «Installation is complete» натисніть OK.

Використання програми WinDbg для аналізу аварійних дампів пам'яті

  • запустіть WinDbg (за замовчуванням встановлюється в папку \ Program Files \ Debugging Tools for Windows);
  • виберіть меню File -> Symbol File Path ...;
  • у вікні Symbol Search Path натисніть кнопку Browse ...;
  • у вікні Огляд папок вкажіть розташування папки Symbols (за замовчуванням - \ WINDOWS \ Symbols) -> OK -> OK;
  • виберіть меню File -> Open Crash Dump ... (або натисніть Ctrl + D);
  • у вікні Open Crash Dump вкажіть розташування Crash Dump File (* .dmp) -> Відкрити;
  • у вікні Workspace з питанням «Save information for workspace?», встановіть прапорець Don "t ask again -> No;
  • у вікні WinDbg відкриється вікно Command Dump<путь_и_имя_файла_дампа>з аналізом дампа;
  • перегляньте аналіз дампа пам'яті;
  • в розділі «Bugcheck Analysis» буде вказана можлива причинакраху, наприклад, «Probably caused by: smwdm.sys (smwdm + 454d5)»;
  • для перегляду детальної інформаціїнатисніть посилання «! analyze -v» в рядку «Use! analyze -v to get detailed debugging information»;
  • закрийте WinDbg;
  • використовуйте отриману інформацію для усунення причини несправності.

Наприклад, на наступному скріншоті причина несправності - файл nv4_disp.dll драйвера відеокарти.

В ОС Windows дуже часто трапляються помилки, навіть у випадку з «чистою» системою. Якщо звичайні помилки програм вирішити можна (з'являється повідомлення про недостатньому компоненті), то виправити критичні помилки буде набагато складніше.

Що таке дамп пам'яті в Windows

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

Існує кілька видів дампов пам'яті:

малий дамп(Small Memory Dump) - зберігає мінімальний обсяг ОЗУ, де містяться дані по критичним помилок (BSoD) і компонентах, які були завантажені під час роботи системи, наприклад, драйвера, програми. MiniDumpзберігається шляхом C: \ Windows \ Minidump.

повний дамп(Complete Memory Dump) - зберігається повний обсяг ОЗУ. Це означає, що розмір файлу буде дорівнює обсягу оперативної пам'яті. Якщо місця на диску мало, буде проблематично зберегти, наприклад, 32 Гб. Також бувають проблеми зі створенням файлу дампа пам'яті більше 4 Гб. даний видвикористовується дуже рідко. Зберігатися по шляху C: \ Windows \ MEMORY.DMP.

дамп пам'яті ядра- зберігається лише інформація, що відноситься до ядра системи.

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

Інформація в реєстрі

Якщо заглянути в реєстр Windows, то можна виявити деякі корисні параметри знімків. Клацаємо клавіші Win + R, вводимо команду regeditі відкриваємо такі гілки:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ CrashControl

У даній гілці користувач виявить такі параметри:

  • AutoReboot- активація або відключення перезавантаження після створення синього екрану смерті (BSoD).
  • DumpFile- назва видів дампов і розташування.
  • CrashDumpEnabled- номер створюваного файлу, наприклад, число 0 - дамп не створюється; 1 - створення повного дампа; 2 - створення дампа ядра; 3 - створення малого дампа.
  • DumpFilters- параметр дозволяє додати нові функції перед створенням знімка. Наприклад, шифрування файлу.
  • MinidumpDir- назва малого дампа і його розташування.
  • LogEvent- активація запису відомостей в системний журнал.
  • MinidumpsCount- задати кількість створюваних малих дампов. (Перевищення цієї кількості буде знищувати старі файли і замінювати їх).
  • Overwrite- функція для повного дампа або системного. При створенні нового знімка, попередній буде завжди замінюватися на новий.
  • DedicatedDumpFile- створення альтернативного файлу знімка і вказівка ​​його шляху.
  • IgnorePagefileSize- використовується для тимчасового розташування знімка, без використання файлу підкачки.

Як це працює

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

Зазвичай файл зберігається в виділеному для файлу підкачки блоці жорсткого диска, після появи BSoD файл перезаписується в той вид, який користувач сам і налаштував (Малий, повний або дамп ядра). Хоча, в сучасних ОС участь файлу підкачки не обов'язково.

Як включити дампи

В Windows 7:

В Windows 8 і 10:

Тут процес трохи схожий, до відомостей про систему можна потрапити точно також, як в Windows 7. У «Десятці» обов'язково відкриваємо « цей комп'ютер», Натискаємо по вільному місцю правою кнопочкою мишки і вибираємо« властивості». По-іншому туди можна потрапити через Панель управління.

Другий варіант для Windows 10:


Слід зауважити, що в нових версіях Windows 10 з'явилися нові пункти, яких не було в «сімці»:

  • малий дамппам'яті 256 КБ - мінімальні дані про збої.
  • активний дамп- з'явився в десятій версії системи і зберігає лише активну пам'ять комп'ютера, ядра системи і користувача. Рекомендується використовувати на серверах.

Як видалити дамп

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

Якщо ніяких пунктів виявлено не було, можливо дампи були включені.

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

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

Беремо з офіційного сайту Microsoft данупрограму на кроці 2, де описана « установкаWDK»- https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk.

Щоб працювати з програмою ще знадобитися спеціальний пакет налагоджувальних символів. Він називається Debugging Symbols, Раніше його можна було скачати з сайту Microsoft, але тепер вони відмовилися від цієї ідеї і доведеться використовувати функцію програми File — « Symbol File Path», Куди слід вписати наступну сходинку і натиснути ОК:

set _NT_SYMBOL_PATH = srv * DownstreamStore * https: //msdl.microsoft.com/download/symbols

Якщо не спрацювало, пробуємо ось цю команду:

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

Знову натискаємо пункт «File» і вибираємо опцію «Save Workspace».

Утиліта налаштована. Залишається вказати шлях до файлів дампов пам'яті. Для цього натискаємо File і клацніть опцію « OpenCrashDump». Розташування всіх дампов зазначено на початку статті.

Після вибору закінчиться аналіз і проблемний компонент автоматично буде виділено. Для отримання більшої кількостіінформації в цьому ж віконці можна ввести таку команду: ! Analyze -v

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

Завантажити інструмент безкоштовно можна з цього сайту - http://www.nirsoft.net/utils/blue_screen_view.html. Установка не вимагає якихось навичок. Використовується тільки в Windows 7 і вище.

Запускаємо і налаштовуємо. Натисніть «Налаштування» (Options) - « Додаткові параметри»(Advanced Options). Виберіть перший пункт « Завантажувати мінідампа з цієї папки»І вказуємо каталог - C: \ WINDOWS \ Minidump. Хоча можна просто натиснути кнопку «За замовчуванням». Натискаємо ОК.

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

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

Тепер натискаємо «Файл» і вибираємо, наприклад, пункт « Знайти в Google код помилки + драйвер». якщо знайшли потрібний драйвер, Встановіть і перезавантажте комп'ютер. Можливо помилка зникне.



Сподобалася стаття? поділіться їй