Как проанализировать файл дампа памяти и найти причину сбоя

После синего экрана смерти Windows сохраняет файл MEMORY.DMP или минидамп в папке C:\Windows\Minidump — и именно в нём зафиксирован драйвер или модуль, вызвавший критическую ошибку. Пока этот файл не открыт в отладчике, причина BSOD остаётся догадкой: код остановки на экране даёт лишь общее направление, тогда как анализ дампа показывает конкретный виновник, например nvlddmkm.sys или ntoskrnl.exe.

Дампы бывают разных типов: малый дамп памяти (обычно до нескольких сотен килобайт), дамп ядра и полный дамп памяти. Для большинства случаев достаточно минидампа — он содержит стек вызовов, список загруженных драйверов и код ошибки. В этой статье разберём, как открыть и прочитать дамп штатными и сторонними инструментами, на что смотреть в первую очередь и как отличить аппаратную проблему от программной.

Где Windows хранит файлы дампов

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

  • 📁 C:\Windows\Minidump — папка с минидампами, каждый файл назван по дате сбоя;
  • 📁 C:\Windows\MEMORY.DMP — полный дамп или дамп ядра, перезаписывается при каждом новом критическом сбое;
  • 📁 %LOCALAPPDATA%\CrashDumps — дампы аварийно завершённых пользовательских приложений (если включён WER);
  • 📁 Папка, указанная в настройках конкретной программы — некоторые приложения (например, браузеры или игры) пишут собственные дампы.

Проверить, включено ли создание дампов, можно так: Панель управления → Система → Дополнительные параметры системы → Загрузка и восстановление → Параметры. В поле «Запись отладочной информации» должен быть выбран хотя бы «Малый дамп памяти». Если там стоит «Нет», после следующего сбоя анализировать будет нечего.

⚠️ Внимание: если на системном диске мало свободного места или файл подкачки отключён, полный дамп памяти может не создаться. Для записи дампа ядра файл подкачки должен находиться на системном разделе — это требование Windows, а не рекомендация.

Быстрый анализ через BlueScreenView

Для первичной диагностики не обязательно осваивать отладчик. Утилита BlueScreenView от NirSoft сканирует папку минидампов и показывает по каждому сбою код ошибки, время, параметры и список драйверов, причём модули, найденные в стеке на момент падения, подсвечиваются.

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

Важно понимать ограничение метода: подсвеченный модуль — это не всегда причина, иногда это жертва. Например, ntoskrnl.exe фигурирует в огромном числе дампов просто потому, что ядро участвует в любой операции. Ориентируйтесь на сторонние драйверы, а не на компоненты самой системы.

📊 Какой инструмент анализа дампов вы используете чаще?
WinDbg
BlueScreenView
WhoCrashed
Ещё не анализировал, только собираюсь

Полноценный анализ в WinDbg

WinDbg — официальный отладчик Microsoft, дающий максимум информации. Современная версия называется WinDbg Preview и распространяется через Microsoft Store, классическая входит в состав Windows SDK. Для анализа дампов ядра это основной инструмент.

Порядок действий: откройте файл дампа через File → Open Dump File, дождитесь загрузки и выполните команду автоматического анализа:

!analyze -v

Команда выдаёт развёрнутый отчёт: код bugcheck, параметры, стек вызовов и поле IMAGE_NAME / MODULE_NAME, где указан модуль, который отладчик считает вероятной причиной. Для корректной работы анализа нужны символы — отладочные данные Microsoft. Их можно подключить командой настройки пути:

.sympath srv*C:\Symbols*https://msdl.microsoft.com/download/symbols

☑️ Чек-лист анализа дампа в WinDbg

Выполнено: 0 / 6

Дополнительно полезны команды lmvm имя_модуля (показывает версию и дату драйвера) и !thread (информация о потоке, в котором произошёл сбой). Устаревшая дата драйвера — косвенный признак того, что его стоит обновить.

На какие поля смотреть в отчёте

Отчёт !analyze -v объёмный, но для диагностики критичны несколько полей. Разберём их значение.

ПолеЧто показываетКак использовать
BUGCHECK_CODEКод критической ошибки (например, 0x1A, 0x3B)Определяет класс проблемы: память, драйвер, файловая система
MODULE_NAMEМодуль, в котором произошёл сбойПервый кандидат на проверку и обновление
IMAGE_NAMEИмя файла модуляПозволяет найти драйвер на диске и узнать его версию
STACK_TEXTСтек вызовов на момент паденияПоказывает цепочку функций, приведшую к ошибке
FAILURE_BUCKET_IDАвтоматическая классификация сбояУдобно для поиска похожих случаев в документации

Отдельного внимания заслуживают параметры bugcheck — четыре значения в скобках после кода. Их смысл зависит от конкретного кода остановки и описан в официальной документации Microsoft «Bug Check Code Reference». Не пытайтесь трактовать параметры «в общем виде»: для разных кодов одно и то же значение означает разное.

Как отличить программный сбой от аппаратного

Это ключевой вопрос диагностики, и дамп даёт на него косвенные, но полезные подсказки. Единственного «поля с вердиктом» не существует — вывод делается по совокупности признаков.

  • 🔧 Один и тот же драйвер в разных дампах — почти наверняка программная причина: обновите или откатите его;
  • 🎲 Случайные модули и разные коды ошибок — типичный признак неисправной оперативной памяти или нестабильного разгона;
  • 🌡️ Сбои под нагрузкой (игры, рендеринг) с ошибками видеодрайвера — проверьте температуры и питание видеокарты;
  • 💾 Ошибки с участием Ntfs.sys или storport.sys — возможна проблема с диском или его контроллером, проверьте SMART и кабели.

Для проверки памяти используйте штатное средство mdsched.exe или более тщательный MemTest86, загружаемый с флешки. Если включён разгон (XMP-профиль, разгон процессора) — верните штатные частоты и понаблюдайте: исчезновение сбоев само по себе является диагнозом.

⚠️ Внимание: не обновляйте BIOS и не перепрошивайте устройства только на основании одного дампа. Сначала выполните обратимые проверки — обновление драйверов, тест памяти, откат разгона. Прошивка — рискованная операция, которая оправдана лишь при подтверждённой необходимости.

Что делать, если папка Minidump пуста

Проверьте настройки: Панель управления → Система → Дополнительные параметры → Загрузка и восстановление. Убедитесь, что выбран тип дампа и снята галочка «Выполнить автоматическую перезагрузку» — тогда код ошибки можно будет прочитать на экране. Также проверьте, что файл подкачки не отключён и находится на системном диске, а чистильщики вроде CCleaner не удаляют дампы автоматически.

Анализ дампов отдельных приложений

Не только система в целом, но и отдельные программы оставляют дампы при аварийном завершении. Если падает конкретное приложение, а Windows работает стабильно, искать нужно дамп пользовательского режима, а не дамп ядра.

Такой дамп можно создать вручную: в Диспетчере задач на вкладке «Подробности» щёлкните правой кнопкой по зависшему процессу и выберите «Создать файл дампа памяти» — система сохранит файл и покажет путь к нему. Открывается он тем же WinDbg, но анализ начинается с команд !analyze -v (для managed-кода .NET — расширение SOS и команда !pe для просмотра исключения).

Для .NET-приложений удобнее связка dotnet-dump analyze из кроссплатформенного инструментария Microsoft. Она показывает управляемые исключения, потоки и кучу без настройки символов ядра.

Типичные ошибки при анализе

Начинающие диагносты часто делают одни и те же промахи, которые ведут к ложным выводам и лишним действиям.

Первая ошибка — анализ без символов. Без них стек выглядит как набор адресов, и отладчик может указать неверный модуль. Вторая — выводы по единственному дампу: один сбой может быть случайностью, закономерность видна только по серии из трёх-пяти файлов. Третья — слепое доверие полю «Probably caused by»: это эвристика, а не приговор, её нужно перепроверять стеком и здравым смыслом.

⚠️ Внимание: не удаляйте и не заменяйте системные файлы вроде ntoskrnl.exe или hal.dll, даже если они указаны в дампе. Эти модули почти всегда оказываются в стеке постольку, поскольку являются ядром системы, а реальная причина обычно кроется в драйвере или железе.

И наконец: не игнорируйте контекст. Сбои начались после обновления драйвера, установки антивируса или подключения нового устройства? Хронология часто важнее самого дампа — сопоставьте дату первого файла в Minidump с недавними изменениями в системе.

Часто задаваемые вопросы

Чем открыть файл .dmp без установки программ?

Штатных средств просмотра дампов в Windows нет. Минимальный вариант — портативная утилита BlueScreenView, которая не требует установки. Для глубокого анализа понадобится WinDbg из Microsoft Store.

Почему WinDbg пишет, что не может загрузить символы?

Чаще всего не настроен путь к серверу символов или нет доступа в интернет. Выполните команду .symfix для автоматической настройки, затем .reload и повторите анализ.

Можно ли анализировать дамп с другого компьютера?

Да, файл дампа не привязан к машине, на которой создан. Скопируйте его на свой ПК и откройте в WinDbg — анализ будет полноценным, версии Windows на двух машинах могут отличаться.

В дампе указан ntoskrnl.exe — значит, проблема в Windows?

Практически никогда. Ядро системы фигурирует в стеке большинства сбоев, потому что через него проходят все системные вызовы. Ищите в стеке сторонние драйверы, а при «плавающих» ошибках проверяйте память и разгон.

Сколько дампов нужно для достоверного вывода?

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