Активный дамп памяти windows 10. Проводим анализ дампа памяти или как выявить причину BSoD? Установка WinDBG в Windows

В момент критического сбоя операционная система Windows прерывает работу и показывает синий экран смерти (BSOD). Содержимое оперативной памяти и вся информация о возникшей ошибке записывается в файл подкачки. При следующей загрузке Windows создается аварийный дамп c отладочной информацией на основе сохраненных данных. В системном журнале событий создается запись о критической ошибке.

Внимание! Аварийный дамп не создается, если отказала дисковая подсистема или критическая ошибка возникла на начальной стадии загрузки Windows.

Типы аварийных дампов памяти Windows

На примере актуальной операционной системы Windows 10 (Windows Server 2016) рассмотрим основные типы дампов памяти, которые может создавать система:

  • Мини дамп памяти (Small memory dump) (256 КБ). Этот тип файла включает минимальный объем информации. Он содержит только сообщение об ошибке BSOD, информацию о драйверах, процессах, которые были активны в момент сбоя, а также какой процесс или поток ядра вызвал сбой.
  • Дамп памяти ядра (Kernel memory dump) . Как правило, небольшой по размеру — одна треть объема физической памяти. Дамп памяти ядра является более подробным, чем мини дамп. Он содержит информацию о драйверах и программах в режиме ядра, включает память, выделенную ядру Windows и аппаратному уровню абстракции (HAL), а также память, выделенную драйверам и другим программам в режиме ядра.
  • Полный дамп памяти (Complete memory dump) . Самый большой по объему и требует памяти, равной оперативной памяти вашей системы плюс 1MB, необходимый Windows для создания этого файла.
  • Автоматический дамп памяти (Automatic memory dump) . Соответствует дампу памяти ядра с точки зрения информации. Отличается только тем, сколько места он использует для создания файла дампа. Этот тип файлов не существовал в Windows 7. Он был добавлен в Windows 8.
  • Активный дамп памяти (Active memory dump) . Этот тип отсеивает элементы, которые не могут определить причину сбоя системы. Это было добавлено в Windows 10 и особенно полезно, если вы используете виртуальную машину, или если ваша система является хостом Hyper-V.

Как включить создание дампа памяти в Windows?

С помощью Win+Pause откройте окно с параметрами системы, выберите «Дополнительные параметры системы » (Advanced system settings). Во вкладке «Дополнительно » (Advanced), раздел «» (Startup and Recovery) нажмите кнопку «Параметры » (Settings). В открывшемся окне настройте действия при отказе системы. Поставьте галку в чек-боксе «Записать события в системный журнал » (Write an event to the system log), выберите тип дампа, который должен создаваться при сбое системы. Если в чек-боксе «Заменять существующий файл дампа » (Overwrite any existing file) поставить галку, то файл будет перезаписываться при каждом сбое. Лучше эту галку снять, тогда у вас будет больше информации для анализа. Отключите также автоматическую перезагрузку системы (Automatically restart).

В большинстве случаев для анализа причины BSOD вам будет достаточно малого дампа памяти.

Теперь при возникновении BSOD вы сможете проанализировать файл дампа и найти причину сбоев. Мини дамп по умолчанию сохраняется в папке %systemroot%\minidump. Для анализа файла дампа рекомендую воспользоваться программой WinDBG (Microsoft Kernel Debugger ).

Установка WinDBG в Windows

Утилита WinDBG входит в «Пакет SDK для Windows 10 » (Windows 10 SDK). .

Файл называется winsdksetup.exe , размер 1,3 МБ.

Запустите установку и выберите, что именно нужно сделать – установить пакет на этот компьютер или загрузить для установки на другие компьютеры. Установим пакет на локальный компьютер.

Можете установить весь пакет, но для установки только инструмента отладки выберите Debugging Tools for Windows .

После установки ярлыки WinDBG можно найти в стартовом меню.

Настройка ассоциации.dmp файлов с WinDBG

Для того, чтобы открывать файлы дампов простым кликом, сопоставьте расширение.dmp с утилитой WinDBG.

  1. Откройте командную строку от имени администратора и выполните команды для 64-разрядной системы: cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    windbg.exe –IA
    для 32-разрядной системы:
    C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
    windbg.exe –IA
  2. В результате типы файлов: .DMP, .HDMP, .MDMP, .KDMP, .WEW – будут сопоставлены с WinDBG.

Настройка сервера отладочных символов в WinDBG

Отладочные символы (debug-символы или symbol files) – это блоки данных, генерируемые в процессе компиляции программы совместно с исполняемым файлом. В таких блоках данных содержится информация о именах переменных, вызываемых функциях, библиотеках и т.д. Эти данные не нужны при выполнении программы, но полезные при ее отладке. Компоненты Microsoft компилируются с символами, распространяемыми через Microsoft Symbol Server.

Настройте WinDBG на использование Microsoft Symbol Server:

  • Откройте WinDBG;
  • Перейдите в меню File –> Symbol File Path;
  • Пропишите строку, содержащую URL для загрузки символов отладки с сайта Microsoft и папку для сохранения кэша: SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols В примере кэш загружается в папку E:\Sym_WinDBG, можете указать любую.
  • Не забывайте сохранить изменения в меню File –> Save WorkSpace;

WinDBG произведет поиск символов в локальной папке и, если не обнаружит в ней необходимых символов, то самостоятельно загрузит символы с указанного сайта. Если вы хотите добавить собственную папку с символами, то можно сделать это так:

SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols;c:\Symbols

Если подключение к интернету отсутствует, то загрузите предварительно пакет символов с ресурса Windows Symbol Packages .

Анализ аварийного дампа памяти в WinDBG

Отладчик WinDBG открывает файл дампа и загружает необходимые символы для отладки из локальной папки или из интернета. Во время этого процесса вы не можете использовать WinDBG. Внизу окна (в командной строке отладчика) появляется надпись Debugee not connected.

Команды вводятся в командную строку, расположенную внизу окна.

Самое главное, на что нужно обратить внимание – это код ошибки, который всегда указывается в шестнадцатеричном значении и имеет вид 0xXXXXXXXX (указываются в одном из вариантов — STOP: , 02.07.2019 0008F, 0x8F). В нашем примере код ошибки 0х139.

Отладчик предлагает выполнить команду!analyze -v, достаточно навести указатель мыши на ссылку и кликнуть. Для чего нужна эта команда?

  • Она выполняет предварительный анализ дампа памяти и предоставляет подробную информацию для начала анализа.
  • Эта команда отобразит STOP-код и символическое имя ошибки.
  • Она показывает стек вызовов команд, которые привели к аварийному завершению.
  • Кроме того, здесь отображаются неисправности IP-адреса, процессов и регистров.
  • Команда может предоставить готовые рекомендации по решению проблемы.

Основные моменты, на которые вы должны обратить внимание при анализе после выполнения команды!analyze –v (листинг неполный).

1: kd> !analyze -v


* *
* Bugcheck Analysis *
* *
*****************************************************************************
Символическое имя STOP-ошибки (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
Описание ошибки (Компонент ядра повредил критическую структуру данных. Это повреждение потенциально может позволить злоумышленнику получить контроль над этой машиной):

A kernel component has corrupted a critical data structure. The corruption could potentially allow a malicious user to gain control of this machine.
Аргументы ошибки:

Arguments:
Arg1: 0000000000000003, A LIST_ENTRY has been corrupted (i.e. double remove).
Arg2: ffffd0003a20d5d0, Address of the trap frame for the exception that caused the bugcheck
Arg3: ffffd0003a20d528, Address of the exception record for the exception that caused the bugcheck
Arg4: 0000000000000000, Reserved
Debugging Details:
------------------

Счетчик показывает сколько раз система упала с аналогичной ошибкой:

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

Код STOP-ошибки в сокращенном формате:

BUGCHECK_STR: 0x139

Процесс, во время исполнения которого произошел сбой (не обязательно причина ошибки, просто в момент сбоя в памяти выполнялся этот процесс):

PROCESS_NAME: sqlservr.exe

Расшифровка кода ошибки: В этом приложении система обнаружила переполнение буфера стека, что может позволить злоумышленнику получить контроль над этим приложением.

ERROR_CODE: (NTSTATUS) 0xc0000409 - The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application.

Последний вызов в стеке:

LAST_CONTROL_TRANSFER: from fffff8040117d6a9 to fffff8040116b0a0

Стек вызовов в момент сбоя:

STACK_TEXT:
ffffd000`3a20d2a8 fffff804`0117d6a9: 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`3a20d528: nt!KeBugCheckEx
ffffd000`3a20d2b0 fffff804`0117da50: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2: nt!KiBugCheckDispatch+0x69
ffffd000`3a20d3f0 fffff804`0117c150: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: nt!KiFastFailDispatch+0xd0
ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`000006f9: nt!KiRaiseSecurityCheckFailure+0x3d0
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951: nt! ?? ::FNODOBFM::`string"+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac: 00000000`00000004 00000000`00000000 ffffd000`3a20d9d8 ffffe001`0a34c600: nt!IopSynchronousServiceTail+0x379
ffffd000`3a20d990 fffff804`0117d313: ffffffff`fffffffe 00000000`00000000 00000000`00000000 000000eb`a0cf1380: nt!NtWriteFile+0x694
ffffd000`3a20da90 00007ffb`475307da: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: nt!KiSystemServiceCopyEnd+0x13
000000ee`f25ed2b8 00000000`00000000: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: 0x00007ffb`475307da

Участок кода, где возникла ошибка:

FOLLOWUP_IP:
nt!KiFastFailDispatch+d0
fffff804`0117da50 c644242000 mov byte ptr ,0
FAULT_INSTR_CODE: 202444c6
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: nt!KiFastFailDispatch+d0
FOLLOWUP_NAME: MachineOwner

Имя модуля в таблице объектов ядра. Если анализатору удалось обнаружить проблемный драйвер, имя отображается в полях MODULE_NAME и IMAGE_NAME:

MODULE_NAME: nt
IMAGE_NAME: ntkrnlmp.exe

1: kd> lmvm nt
Browse full module list
Loaded symbol image file: ntkrnlmp.exe
Mapped memory image file: C:\ProgramData\dbg\sym\ntoskrnl.exe\5A9A2147787000\ntoskrnl.exe
Image path: ntkrnlmp.exe
Image name: ntkrnlmp.exe
InternalName: ntkrnlmp.exe
OriginalFilename: ntkrnlmp.exe
ProductVersion: 6.3.9600.18946
FileVersion: 6.3.9600.18946 (winblue_ltsb_escrow.180302-1800)

В приведенном примере анализ указал на файл ядра ntkrnlmp.exe. Когда анализ дампа памяти указывает на системный драйвер (например, win32k.sys) или файл ядра (как в нашем примере ntkrnlmp.exe), вероятнее всего данный файл не является причиной проблемы. Очень часто оказывается, что проблема кроется в драйвере устройства, настройках BIOS или в неисправности оборудования.

Если вы увидели, что BSOD возник из-за стороннего драйвера, его имя будет указано в значениях MODULE_NAME и IMAGE_NAME.

Например:

Image path: \SystemRoot\system32\drivers\cmudaxp.sys
Image name: cmudaxp.sys

Откройте свойсва файла драйвера и проверьте его версию. В большинстве случаев проблема с драйверами решается их обнвовлением.

Добрый день уважаемые коллеги и читатели блога сайт. Сегодня я хочу вам рассказать как производится анализ дампа памяти windows 10 Redstone. Делается это в большинстве случаев когда у вас выскакивает синий экран смерти с ошибкой, после чего ваш компьютер перезагружается. И данный анализ помогает понять причину сбоя.

Настраиваем дамп памяти windows 10

И так, что же такое дамп памяти в операционной системе Windows 10 Redstone . Выше я вам описал, очень частую причину при которой появляется дамп памяти системы и это синие экраны смерти. Причины их появления очень обширны:

  • Не совместимость приложений
  • Не совместимость драйверов
  • Новые обновления Windows
  • Не совместимость устройств

Это лишь маленький обобщенный список, так как кодов ошибок от синих экраном, целая тьма, приведу самые последние из них.

Наша с вами задача, уметь найти эти файлы для диагностики и уметь их интерпретировать, для получения информации о проблеме.

Где настраивается аварийный дамп памяти windows 10

Для начала давайте разберемся, где производится настройка, которая отвечает за аварийный дамп памяти windows 10. Щелкаете правым кликом по кнопке пуск Windows 10 и из контекстного меню выбираете пункт Система.

В открывшемся окне Система, вы в левом верхнем углу выбираете Дополнительные параметры Системы.

Именно тут и настраивается дамп памяти windows 10. жмем пункт параметры в Загрузка и восстановление.

Из настроек, дампа памяти windows 10, хочу отметить следующие:

  • Запись события в системный журнал > тут информация о синем экране будет добавлена в логи операционной системы.
  • Выполнить автоматическую перезагрузку > чтобы продолжить после ошибки работу
  • Запись отладочной информации > позволяет выбрать вид дамп файла, об этом ниже.
  • Заменить существующий файл дампа, полезная галка, так как данные дампы могут весить десятки гигабайт, очень критично для маленьких ссд дисков.

Виды дампов памяти

Давайте рассмотрим, чем же отличаются варианты записи отладочной информации

  • Малый дамп памяти 256 кб: Файлы малого дампа памяти содержат следующие сведения:

– сообщение о неустранимой ошибке, ее параметры и прочие данные;

– список загруженных драйверов;

– контекст процессора (PRCB ), на котором произошел сбой;

EPROCESS ) для процесса, вызвавшего ошибку;

– сведения о процессе и контекст ядра (ETHREAD ) для потока, вызвавшего ошибку;

– стек вызовов в режиме ядра для потока, вызвавшего ошибку.

Его используют, когда у вас очень мало дискового пространства на вашем локальном диске. За счет этого мы жертвуем полезной информацией, которой может не хватить для диагностики синего экрана.

Хранится мини дамп по пути C:\Windows\Minidump

  • Дамп памяти ядра > записывает только память ядра. В зависимости от объема физической памяти ПК в этом случае для файла подкачки требуется от 50 до 800 МБ или одна треть физической памяти компьютера на загрузочном томе.
  • Полный дамп памяти > ну тут и так все понятно из названия. Пишет абсолютно все, это максимальная информация о синем экране, дает сто процентную диагностику проблемы.

Располагается по пути C:\Windows\Memory.dmp

  • Активный дамп памяти > сюда попадает активная память хостовой машины, это функция больше для серверных платформ, так как они могут использоваться для виртуализации, и чтобы в дамп не попадала информация о виртуальных машинах , придумана данная опция.

На следующем шаге выбора компонент к установке (Select the features you want to install ) отмечаем только то, что нам нужно - Debugging tools for Windows и нажимаем Install

В указанную на первом экране папку из Интернета будет загружен и установлен набор утилит.

После окончания установки находим в меню “Пуск” или на стартовом экране в группе ярлыков Windows Kits утилиту WinDbg и запускаем её с правами администратора

Если по какой-то причине ярлык найти не удалось, то можно запустить исполняемый файл из каталога установки - С:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\windbg.exe

В главном меню программы WinDbg выбираем пункты File > Symbol File Path . В открывшееся окно вставляем строку определяющую пусть к локальному каталогу символьного кэша и его онлайн-источнику:

SRV*C:\Windows\symbol_cache*http://msdl.microsoft.com/download/symbols

Сохраняем настройки, выбрав в главном меню пункты File > Save Workspace

Открываем файл дампа памяти, выбрав в меню File > Open Crash Dump ...

Выбираем файл MEMORY.DMP (по умолчанию расположен в каталоге C:\Windows ) и нажимаем Open

Появится информация о том, какой именно исполняемый модуль стал причиной остановки работы системы. Щёлкнув по гиперссылке !analyze-v можно получить более развернутую информацию о состоянии системы на момент возникновения стоп-ошибки.

Туже самую информацию можно получить и с помощью командной строки используя примерно следующую последовательность команд:

cd /d "C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\ " kd -z "D:\DOWNLOADS\VM05\MEMORY.DMP " .logopen C:\Debuglog.txt .sympath srv*C:\Windows\symbol_cache*http://msdl.microsoft.com/download/symbols

В этом примере вся информация о разборе дампа будет выгружена в читаемом виде в файл C:\Debuglog.txt

Источники информации:

Если перед вами появился так называемый синий экран смерти в Windows 10 и вы уже готовы впасть в нервное коматозное состояние, возьмите себя в руки и попробуйте решить возникшую проблему. Для начала стоит сказать, что это зловещее сообщение сигнализирует вам о критической системной ошибке. Более того, далеко не всегда можно словить момент и успеть прочитать код ошибки, когда Windows вывалится в синий экран смерти и произойдет перезагрузка устройства. Сразу отметим, что существует огромное количество решений этой проблемы, как и причин появления синего экрана. В этой статье мы попробуем рассмотреть вероятные причины появления синего экрана счастья, а также о возможных решениях проблемы.

В подавляющем большинстве случаев синий экран смерти сигнализирует про ошибку BAD_POOL_CALLER - stop 0x000000c2. Диагностировать эту ошибку скажем прямо сложно, но возможно и мы попытаемся на примере этой ошибке описать алгоритм ваших следующих действий.

Чтобы правильно осуществить диагностику проблемы, сначала следует проанализировать специальный файл системы под названием minidump (дамп памяти). К созданию таких файлов приводит сбой в работе системы, более того, они могут нас проинформировать – что именно привело к сбою.

1. Чтобы включить такую автоматическую запись малого дампа памяти (по-умолчанию отключено) зайдите в свойства компьютера и перейдите в раздел "Дополнительные параметры системы" (такое включение предусмотрено для все систем, а не только Windows 10):

Как правило все файлы minidump при появлении синего экрана смерти (BSOD) сохраняются, а найти их можно в папке C:\Windows\Minidump. Примечательно, что в имени файла содержится текущая дата – когда он был создан, что значительно облегчает идентификацию даты возникновения ошибки, особенно учитывая, что такой файл может быть не один.

Два способа как расшифровать малый дам памяти minidump

Первый способ , заключается в использовании довольно популярной утилите BlueScreenView . Эта утилита может также стать хорошим вариантом для анализа дампа памяти. Применение этой утилиты как нельзя кстати пригодится, как способ чтобы определить проблемный драйвер.

Более того, она особенно примечательна тем, что с ее помощью возможен просмотр BSOD (синего экрана смерти) как бы в стоп-кадре, как это было, когда система крашилась. Она отображает время и дату сбоя, данные о драйвере или модуле с версией и кратким описанием. Кроме того, утилита доступна на множестве языков, включая русский. Так что утилита BlueScreenView как раз самое то, если нужно произвести быстрый анализ дампов памяти при BSOD.

Для второго способа нужно установить Debugging Tools for Windows , а также загрузить утилиту bsdos_utility . Далее после распаковки скрипта bsdos_utility.cmd следует переместить его на диск C:\ (можно создать отдельную папку, но стоит помнить, что строка адреса запуска скрипта будет отличатся от нашего примера). Затем в командной строке следует написать:

C:\bsdos_utility.cmd

После выведения списка всех дампов из списка C:\Windows\Minidump\, после чего скрипт спросит какой именно дамп должен подвергнуться анализу. Выбрать нужный минидамп можно также самостоятельно при запуске скрипта:

Подобным образом возможно обнаружение массы ошибок Windows 10, из-за которых выпал BSOD, а также проблематичных программ.exe из-за которых случился синий экран.

Windows очень хрупкое творение и чуть что, любое неправильное действие со стороны пользователя влечёт возникновение критических ошибок, и не очень. Узнать информацию по синим экранам смерти, являющимися теми самыми критическими проблемами, помогают сведения, написанные на самом экране, а ещё специальные файлы дампы памяти – сохраняющие данные о причинах появления BsoD. Настоятельно рекомендую включать эту функцию, так как никто не застрахован от появления синего экрана, даже опытный пользователь.

Сами дампы памяти обычно хранятся по пути C:\Windows\MEMORY.DMP, либо C:\Windows\Minidump – где хранятся так называемые малые дампы памяти. Кстати говоря, малый дамп памяти будет тем файлом, который поможет узнать причину появления BsoD.

Обычно создание дампов памяти в Windows 10 по умолчанию отключено, а значит, использование специальных утилит для проверки файлов дампов не даст положительного результата. Давайте приступим непосредственно к действиям.

Как включить функцию дамп памяти на Windows 10 и настроить её

Обычно для просмотра дампов используют утилиты, наподобие BlueScreenView, но вам необходимо прямо сейчас настроить автоматическое создание дампов памяти иначе и эта программа, и аналогичные будут бесполезны.

Откроется окошко, где с левой стороны нажимаем по опции «Дополнительные параметры системы ».

Во вкладке «Дополнительно » жмём пунктик «».

Наконец, открывается окно, где находятся основные параметры по настройке дампов. Тут видно, что в Windows активирован автоматический дамп памяти, который хранится по пути, указанному чуть ниже. А еще включены галочки создания журналов. Помимо этого, создаются и файлы малого дампа памяти, которые при работе с синими экранами смерти очень нам пригодятся. Также сохраняется информацию по ядру системы и памяти. Если стоит автоматический режим, то этого будет достаточно.

Сведения о других дампах памяти

Если открыть выпадающее меню записи отладочной информации, вы увидите несколько пунктов, которые я опишу ниже.

  • Малый дамп памяти – мини дамп, который сохраняется по специальному пути и весит 256 Килобайт. В таком файле хранится основная информация по синим экранам смерти и системным процессам. Если необходимо узнать причину BSOD, то достаточно именно малого дампа памяти. Для извлечения сведений используется программа BlueScreenView или похожие. Такой способ может использовать любой новичок.
  • Дамп памяти ядра – файл будет содержать такие же сведения, что у автоматического типа. Единственное отличие в изменении системой файла подкачки. Какой вариант выбрать? Думаю, что сразу автоматический тип.
  • Полный дамп памяти – в файлике находится полные данные об оперативной памяти, а значит объем файла будет равен размеру оперативки. Стоит у вас на ПК 8 Гб, столько будет на диске занимать файл полного дампа памяти. Для новичков этот вариант особо не пригоден.
  • Активный дамп памяти – первое появление в Windows 10. Больше пригоден для серверов и хранит данные об активной памяти и режимах ядра, а также текущего пользователя.

Как удалить файла дампа памяти

Очень просто, вы заходите по пути расположения этих файлов и вручную их удаляете. Например, файла полного дампа памяти называется MEMORY.DMP, просто удалите его и всё. При использовании инструмента «Очистка диска» тоже есть возможность удалить файлы дампов.


Дамп памяти может быть выключен по причине действия утилит по чистке системы. При использовании SSD и специальных утилит для работы с этими накопителями, они также могут отключать некоторые функции системы, чтобы твердотельный накопитель меньше подвергался процедурам чтения/записи.