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

Проблема

Системный администратор настраивает политику записи аварийных дампов памяти на десятках серверов и рабочих станций, указывая тип дампа, путь сохранения и параметры перезагрузки. Но как убедиться, что при реальном критическом сбое Windows действительно запишет файл MEMORY.DMP, а не молча перезагрузится, оставив администратора без инструментов диагностики? Ждать естественного BSOD, особенно на стабильном продакшен-сервере, можно месяцами, а специально «ронять» систему, отключая критичные службы или перегревая процессор, опасно и неконтролируемо. Существует безопасный способ принудительно вызвать синий экран смерти, чтобы проверить корректность записи дампа и отточить процедуру анализа до того, как произойдёт реальный инцидент. Windows BSOD, инициированный вручную, это штатная, поддерживаемая Microsoft функция, которая позволяет администратору убедиться, что цепочка «сбой → дамп → анализ» работает без сюрпризов.

Решение

Применим два документированных метода ручного вызова BSOD: встроенный механизм CrashOnCtrlScroll, активируемый через реестр, и утилиту NotMyFault из набора Sysinternals. Оба варианта описаны в официальной документации Microsoft: Forcing a System Crash from the Keyboard и Sysinternals NotMyFault. После того как дамп будет сгенерирован, мы проверим его наличие и откроем в WinDbg, чтобы подтвердить, что информация о крахе (включая имя драйвера или процесса) корректно записана. Такой подход позволяет заранее выявить проблемы с размером файла подкачки, правами доступа или некорректной конфигурацией дампов, не дожидаясь реальной аварии.

Пошаговая инструкция

Шаг 1. Настройка параметров дампа перед тестом

Прежде чем вызывать BSOD, убедитесь, что система настроена на сохранение нужного типа дампа. Текущие настройки можно проверить и изменить в окне «Загрузка и восстановление».

  1. Нажмите Win + R, введите sysdm.cpl и нажмите Enter.
  2. Перейдите на вкладку Дополнительно, в разделе «Загрузка и восстановление» нажмите Параметры.
  3. В блоке «Отказ системы»:
    • Убедитесь, что галка Записать событие в системный журнал установлена.
    • Снимите галку Автоматически выполнить перезагрузку, чтобы увидеть синий экран и дать системе время на запись дампа.
    • В раскрывающемся списке «Запись отладочной информации» выберите Активный дамп памяти (Active memory dump) — он содержит всю память ядра и пользовательских процессов и рекомендуется для ручного теста. Если места на диске мало, используйте Дамп памяти ядра или Автоматический дамп памяти.
    • Убедитесь, что путь к файлу — %SystemRoot%\MEMORY.DMP.
  4. Нажмите ОК. Система может запросить перезагрузку — согласитесь.
  5. Проверьте, что на системном диске достаточно свободного места (минимум на 20–30% больше объёма ОЗУ, так как дамп может достигать размеров, равных объёму оперативной памяти).

Подробное описание типов дампов и их настройка приведены в статье Microsoft Varieties of Kernel-Mode Dump Files.

Шаг 2. Создание ручного BSOD с помощью CrashOnCtrlScroll

Этот метод реализуется через реестр и позволяет вызвать крах нажатием комбинации клавиш. Он полностью безопасен для оборудования.

  1. Откройте редактор реестра (regedit) от имени администратора.
  2. Перейдите по пути: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters. Если ветка отсутствует, создайте её.
  3. Создайте новый параметр DWORD (32 бита) с именем CrashOnCtrlScroll и значением 1.
  4. Аналогичный параметр нужно добавить для клавиатур, подключённых через USB и PS/2. Если используется несколько типов клавиатур, создайте параметр также в ветках:
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\hyperkbd\Parameters (для виртуальных машин Hyper-V)
  5. Перезагрузите компьютер, чтобы изменение вступило в силу.

Теперь, удерживая правую клавишу Ctrl, дважды нажмите клавишу Scroll Lock. Произойдёт немедленный BSOD с кодом MANUALLY_INITIATED_CRASH. Если клавиатура не имеет клавиши Scroll Lock, можно временно подключить внешнюю клавиатуру или использовать метод NotMyFault.

Важно: после проверки отключите эту функцию, удалив параметр или установив его значение в 0, чтобы избежать случайных сбоев. Подробнее см. Forcing a System Crash from the Keyboard.

Шаг 3. Создание ручного BSOD с помощью утилиты NotMyFault (Sysinternals)

NotMyFault — это легитимная утилита от Microsoft, специально созданная для тестирования дампов и диагностики сбоев.

  1. Скачайте NotMyFault с официального сайта Sysinternals NotMyFault.
  2. Распакуйте архив и запустите NotMyFault.exe (или NotMyFault64.exe на 64-разрядных системах).
  3. В окне программы выберите тип сбоя, который хотите эмулировать. Для проверки дампа достаточно выбрать Crash в разделе Fault Type и нажать кнопку Crash. Система немедленно выдаст BSOD с кодом, соответствующим выбранному типу ошибки (например, IRQL_NOT_LESS_OR_EQUAL).
  4. NotMyFault также позволяет запланировать крах при запуске системы это удобно для тестирования автоматической загрузки дампа после перезагрузки.

Шаг 4. Проверка созданного дампа

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

  1. Откройте проводник и перейдите в C:\Windows.
  2. Найдите файл MEMORY.DMP  его размер должен быть соизмерим с объёмом ОЗУ. Если настроены малые дампы, проверьте папку C:\Windows\Minidump  там должны быть файлы с расширением .dmp.
  3. Запустите Просмотр событий (eventvwr.msc), перейдите в Журналы Windows → Система. Найдите событие с источником Kernel-Power и кодом 41 (перезагрузка без корректного завершения), а также событие BugCheck с кодом ошибки. Это подтверждает, что BSOD был записан.
  4. Откройте дамп в WinDbg (подробная инструкция приведена в статье «BSOD Windows: полная расшифровка STOP-кодов и алгоритм диагностики»). Выполните команду !analyze -v, чтобы убедиться, что отчёт содержит корректную информацию о ручном вызове краха строку вроде MANUALLY_INITIATED_CRASH или имя проблемного модуля NotMyFault.

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

Шаг 5. Отключение тестовых механизмов

Обязательно отключите функцию CrashOnCtrlScroll после теста, если вы её включали: удалите параметр CrashOnCtrlScroll в указанных ветках реестра или установите его значение в 0. NotMyFault удалите или оставьте для будущих тестов она не вызывает крахов без прямого запуска.

Устранение распространённых проблем

СимптомВероятная причинаРешение
При нажатии Ctrl+Scroll Lock ничего не происходитНе перезагружен компьютер после добавления параметра реестра, или используется клавиатура, не поддерживающая Scroll LockПерезагрузите ПК. Подключите внешнюю клавиатуру с клавишей Scroll Lock или используйте NotMyFault.
Дамп не создаётся, хотя BSOD появилсяНедостаточно места на диске, или файл подкачки меньше объёма ОЗУ, или отключено сохранение дампаПроверьте настройки в sysdm.cpl. Увеличьте размер файла подкачки до объёма ОЗУ + 1 МБ на системном томе. Убедитесь, что на диске есть свободное место.
Дамп создан, но WinDbg не открывает его или выдаёт ошибкуДамп повреждён, сохранён не полностью или антивирус блокирует доступВременно отключите антивирус при записи дампа. Попробуйте изменить тип дампа на «Малый дамп» и проверьте его в WinDbg.
После ручного BSOD система загружается с ошибкой «Boot device not found»Крайне редкий случай: повреждение файловой системы из-за внезапного выключенияЗагрузитесь с установочной флешки и выполните chkdsk /f /r для системного диска.
NotMyFault не запускается (требуется .NET)Возможно, требуется .NET Framework 4.xУстановите последнюю версию .NET Runtime. Или используйте метод CrashOnCtrlScroll.

Итог

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

Menu