- Синий экран смерти. Анализ и расшифровка дампа памяти при BSOD
- Анализ дампа памяти. Расшифровываем minidump.
- Комментариев: 8
- Настройка minidump Windows 10
- Где находится minidump
- Windows 10 создает только minidump файл
- MINIDUMP_TYPE enumeration (minidumpapiset.h)
- Syntax
- Constants
- Чем открыть файл дампа памяти Windows MEMORY.DMP
- Просмотр и анализ файла минидампа.
- Просмотр полного дампа памяти MEMORY.DMP.
- Установка и настройка WinDBG.
- Просмотр и анализ файла MEMORY.DMP.
- Просмотреть Minidump после падения системы
- 1. Включить Minidump
- 2. Расшифровать Minidump
Синий экран смерти. Анализ и расшифровка дампа памяти при BSOD
Windows вывалился в синий экран смерти. Что делать? Однозначного ответа на этот вопрос нет, так как вариантов лечения и расшифровки синих экранов смерти великое множество. Попробую рассказать как выявить причину синего экрана и диагностировать ошибку с вероятностью, близкой к 100%, а гадание оставим синоптикам.
На прошлой неделе ремонтировал компьютер на котором вылетал синий экран смерти с разными ошибками, чаще всего BAD_POOL_CALLER — stop 0x000000c2. Диагностируется данная ошибка довольно сложно, на его примере и попытаюсь рассказать как узнать причину возникновения по синего экрана смерти.
В процессе диагностики не обойтись без анализа специального файла minidump (дамп памяти) системы. Такие файлы создаются каждый раз после сбоя работы системы и содержат информацию о том, что к этому привело. Обычно все файлы minidump при BSOD сохраняются в папку C:\Windows\Minidump. Кроме того, имя файла содержит текущую дата его создания, чтобы не путаться когда возникла ошибка, если файлов много.
Проверьте, включено ли на вашем компьютере создание файлов minidump при сбое системы.
Анализ дампа памяти. Расшифровываем minidump.
Нам понадобится установить Debugging Tools for Windows и скачать утилиту непосредственно для расшифровки файла дампа kdfe.cmd
Распаковываем скрипт kdfe.cmd и кладем его непосредственно в корень диска диска C:\ или создаем каталог C:\dump. Тут уж как вам удобнее. В командной строке пишем:
Выведется список всех минидампов, из папки C:\Windows\Minidump\ и скрипт предложит указать какой именно дамп будем анализироваться, либо можно самостоятельно выбрать требуемый дамп при запуске скрипта:
На мой взгляд первый вариант удобнее. Пример того что выдал скрипт при анализе одного из дампов памяти:
Еще одно доказательство что лучше избавляться от этих дебильных Амиго и майлру агентов. Таким же образом можно выявить и другие ошибки, приводящие к BSOD.
Существует еще одна интересная утилитка BlueScreenView, часто встречается на загрузочных флешках-реаниматорах, о которой я уже писал ранее на страницах блога, но на мой взгляд менее понятная для новичков.
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.
Комментариев: 8
Спасибо за детальное описание. Помогло.
Не запускается kdfe.cmd , пишет — «Ошибка в синтаксисе команды»
Просто надо изменить эту утилиту.Открыть с помощью блокнота и изменить путь Debudding Tools.Там на какой то строке меняешь в двух-четырех местах вместо program files как у себя, например program files(x86).
Не помогло так как в cmd не находит выше написанное
У меня тоже была подобная ошибка при запуске
Сам догадался посмотреть сценарий и изменить
строку в файле kdfe.cmd
Вот что надо изменить и будет работать:
Я в таких случаях переустанавливал, пока диск не истерся до нечитаемого состояния. Потом линуха поставил.
98 % летит видяшник , подключитесь к встроенной в мамку.. и станет ясно ! удачи ..мужики !
Для начала, надо переписать саму ошибку, то есть например хх. 57 или что то типа того, бывают такие поломки как, полностью выход из строя жесткого диска, в таком случае никакой дамп вы уже не прочтете, у меня так было, поломка ssd диска, там было что то типа хх. 069, благо был рядом второй комп, нашел в инете расшифровку с разными ошибками и поломками, и так быстро установил причину синего экрана, после установки другого диска с системой, пока ssd был в ремонте, проблема исчезла сама собой.
Настройка minidump Windows 10
Определим причину и затем предоставим возможное решение проблемы устройства, работающего под управлением операционной системы Windows 10, создающего только файл minidump. Минидамп Виндовс — это небольшой файл, который сохраняется на вашем устройстве каждый раз, когда система неожиданно зависает, например, когда появляется BSOD (синий экран смерти).
Где находится minidump
minidump находится в каталоге C:\Windows\minidump или C:\Winnt\minidump в зависимости от вашей версии ОС и имеют имена файлов, такие как «Mini031120-01.dmp» — 03 — это месяц, 11 — день, 20 — год, а 01 — номер файла дампа.
Windows 10 создает только minidump файл
Термин eMMC — сокращение от «Embedded Multi-Media Controller» («Встроенный мультимедийный контроллер») и относится к пакету, состоящему из флэш-памяти и контроллера.
Если файл минидамп сохраняется в каталог %systemroot%\minidump, а не в стандартное расположение C:\windows\minidump. То эта проблема вызвана тем, что из-за управления питанием на устройствах SD eMMC, Windows всегда создает дамп и игнорирует параметры дампа памяти, настроенные администратором.
Чтобы переопределить сохранение по умолчанию, на устройстве должен быть настроен специальный параметр реестра.
Вы можете выполнить действия, описанные ниже, чтобы переопределить функцию энергосбережения Windows eMMC во время BugCheck (также известную как ошибка остановки или ошибка синего экрана), чтобы создать дамп памяти ядра или полный дамп памяти.
После того, как вы приняли необходимые меры предосторожности, вы можете действовать следующим образом:
1. Нажмите клавишу Windows + R. В диалоговом окне «Выполнить» введите «control system» и нажмите «Enter», открываем «Дополнительные параметры системы» > «Загрузка и восстановление». Для параметра «Запись отладочной информации» должно быть задано «Дамп памяти ядра» или «Полный дамп памяти».
2. Затем перейдите к запуску редактора реестра, чтобы создать и настроить следующий раздел реестра:
ForceF0State: REG_DWORD: 0x1
Этот параметр реестра позволяет записать файл дампа.
Перейдите к пути реестра:
HKLM\SYSTEM\CurrentControlSet\services\sdbus\Parameters\
- Затем щелкните правой кнопкой мыши в пустое место на правой панели
- Выберите «Создать» > «DWORD» (32-бита)
- С названием параметра ForceF0State
- Дважды щелкните только что созданный параметр и установите для данных значение 0x1
- Нажмите ОК.
3. Затем создайте и настройте следующий раздел реестра:
AlwaysKeepMemoryDump: REG_DWORD: 1
Этот параметр реестра гарантирует, что файл дампа не будет удален при перезагрузке, даже если у вас мало свободного места на диске.
Перейдите к пути реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl
- Затем щелкните правой кнопкой мыши пустое место на правой панели
- Выберите «Создать» > «DWORD» (32-бита)
- Назовите параметр AlwaysKeepMemoryDump
- Дважды щелкните на него и установите для параметра «Значение» 1.
- Нажмите ОК.
4. Убедитесь, что максимальный размер файла подкачки больше, чем объем оперативной памяти, используемой на компьютере.
5. Перезагрузите устройство.
MINIDUMP_TYPE enumeration (minidumpapiset.h)
Identifies the type of information that will be written to the minidump file by the MiniDumpWriteDump function.
The minidump code has evolved greatly over the years since its inception. Many of the constants listed on this page were added later and are not available in all versions of DbgHelp.dll. Those that did not exist in the original code are labeled accordingly along with the version of DbgHelp.dll that they first were implemented in. The listed version numbers corresponds to the Debugging Tools For Windows releases and do not apply to copies of DbgHelp.dll that are integrated into Windows. See DbgHelp Versions for more details.
Syntax
Constants
Name | Description |
---|---|
MiniDumpNormal | Include just the information necessary to capture stack traces for all existing threads in a process. |
MiniDumpWithDataSegs | Include the data sections from all loaded modules. This results in the inclusion of global variables, which can make the minidump file significantly larger. For per-module control, use the ModuleWriteDataSeg enumeration value from MODULE_WRITE_FLAGS. |
MiniDumpWithFullMemory | Include all accessible memory in the process. The raw memory data is included at the end, so that the initial structures can be mapped directly without the raw memory information. This option can result in a very large file. |
MiniDumpWithHandleData | Include high-level information about the operating system handles that are active when the minidump is made. |
MiniDumpFilterMemory | Stack and backing store memory written to the minidump file should be filtered to remove all but the pointer values necessary to reconstruct a stack trace. |
MiniDumpScanMemory | Stack and backing store memory should be scanned for pointer references to modules in the module list. If a module is referenced by stack or backing store memory, the ModuleWriteFlags member of the MINIDUMP_CALLBACK_OUTPUT structure is set to ModuleReferencedByMemory. |
MiniDumpWithUnloadedModules | Include information from the list of modules that were recently unloaded, if this information is maintained by the operating system. |
Windows ServerВ 2003 and WindowsВ XP:В В The operating system does not maintain information for unloaded modules until
Windows ServerВ 2003 with SP1 and WindowsВ XP with SP2.
Чем открыть файл дампа памяти Windows MEMORY.DMP
Многие знакомы с «синим экраном смерти» или BlueScreen. Синий экран появляется когда в работе Windows возникает критическая ошибка, что приводит к остановке работы операционной системы. При этом операционная система создает дамп памяти, в который записывает отладочную информацию и добавляет запись в журнал событий.
В Windows существуют два типа дампа памяти — малый дамп (minidump) и полный дамп.
Minidump находится в директории C:\Windows\Minidump и его название имеет примерно такой вид Mini051819-01.dmp.
Полный дамп располагается в папке C:\Windows и называется MEMORY.DMP.
Просмотр и анализ файла минидампа.
Для просмотра и анализа файла минидампа можно воспользоваться достаточно простой и удобной утилитой BlueScreenView от Nirsoft, которую можно скачать с официального сайта https://www.nirsoft.net/utils/blue_screen_view.html .
Для просмотра минидампа достаточно перетащить файл в окно программы и тут же загрузится отладочная информация. Красным будут подсвечены модули вызвавшие ошибку. В случае представленном на скриншоте выше это был драйвер tcpip.sys.
Щелкнув по имени файла минидампа можно запустить поиск решения в Google.
Но эта программа не способна обработать полный дамп памяти Windows — memory.dmp.
Просмотр полного дампа памяти MEMORY.DMP.
Чтобы посмотреть содержимое полного дампа памяти необходимо открыть файл MEMORY.DMP при помощи утилиты WinDBG, которая входит в пакет Microsoft Windows SDK. Скачать эту утилиту можно с официального сайта Майкрософт по этой ссылке https://developer.microsoft.com/ru-ru/windows/downloads/windows-10-sdk .
Установка и настройка WinDBG.
Запускаем установку пакета Windows Software Development KIT и на этапе выбора компонентов отмечаем «Debugging Tools for Windows».
При первом запуске WinDBG необходимо выполнить настройку сервера отладочных символов.
1. Переходим в меню File > Symbol File Path и вставляем строку:
где C:\symbol_cache — это директория куда будут загружаться символы.
2. Сохраняем настройку File > Save Workspace.
Просмотр и анализ файла MEMORY.DMP.
Открываем файл MEMORY.DMP: File > Open Crash Dump. Начинается процесс загрузки отладочных символов, в этот момент внизу будет видна надпись: Debugee not connected.
По окончанию загрузки появится подсказка: «для анализа этого файла запустите !analize-v».
Щелкаем по надписи !analize-v и запускается анализ дампа. В этот момент в строке состояние будет надпись *BUSY*.
По завершении обработки файла дампа памяти Windows нам необходимо найти среди полученной информации модуль, который вызвал сбой в работе. Найти сбойный модуль можно в строках MODULE_NAME и IMAGE_NAME.
В моем случае произошел сбой в работе драйвера srv.sys. В строке MODULE_NAME имя представлено в виде ссылке, щелкнув по которому можно получить информацию о модуле.
После выявления драйвера послужившего причиной сбоя в работе Windows и появления «Синего экрана смерти» необходимо попытаться обновить его.
Большинство проблем с драйверами решаются их обновлением.
Просмотреть Minidump после падения системы
В Windows существует такая вещь, как minidump. Это файл, который создается после сбоя работы системы с информацией о том, что к этому привело. Но для того, чтобы просмотреть этот файл нужна специальная утилита.
О том как включить функцию Minidump и суметь прочитать его и пойдет речь в этой статье.
1. Включить Minidump
“Пуск” – “Настройка” – “Панель управления” – “Система”, переходим во вкладку “Дополнительно”, в блоке Загрузка и восстановление жмем “Параметры”. Внизу должен быть выбран “Малый дамп памяти” и указан каталог, где он будет храниться:
Теперь, если друг система падает в Синий Экран Смерти (BSoD), то в каталоге C:\Windows\Minidump создастся файл, в имени которого будет текущая дата.
2. Расшифровать Minidump
Для этого нам понадобится установить Debugging Tools for Windows и скачать утилиту непосредственно для расшифровки файла дампа kdfe.cmd
Когда установили Debugging Tools, копируем kdfe.cmd в корень диска C:\
Запускаем командную строку “Пуск” -“Выполнить”, вписываем команду cmd
Теперь в черном окне пишем следующее: C:\kdfe.cmd C:\WINDOWS\Minidump\Mini120710-01.dmp , где “Mini120710-01.dmp” – имя вашего файла дампа.
Результат выглядит так:
В моем случае сбой системы был вызван браузером Google Chrome.