Как принудительно вызвать BSOD в Windows.
Принудительное аварийное завершение работы ОС используется для получения дампов памяти, являющихся основным источником для поиска причин возникновения проблем с оборудованием и компонентами системного программного обеспечения. В естественных условиях при возникновении критической ошибки системы, когда продолжение ее работы невозможно, выполняется аварийное завершение Windows с отображением на экране специального сообщения с кратким описанием ошибки, его кодом, именем программного модуля, возможно являющимся источником сбоя и техническими параметрами, которые детализируют данный тип ошибки. Традиционно, начиная с первых версий Windows, сообщения о критических ошибках отображались на экране синего цвета, откуда и появилось выражение ”синий экран смерти” или
Blue
Screen
Of
Death (BSOD). В настоящее время чаще используется термин ”стоп-ошибка” (Stop Error) с указанием кода ошибки – Stop 0xE2 или Stop E2.
Настройка параметров записи дампа памяти.
В зависимости от версии Windows настройки записи дампа памяти при крахе системы могут отличаться. В любой момент времени их можно изменить. Так, например, для Windows 10 можно перейти в
Параметры – Система – О программе – Дополнительные параметры системы - вкладка
Дополнительно - раздел
Загрузка и восстановление - кнопка
Параметры. В разделе
Запись отладочной информации нужно выбрать разновидность дампа памяти:
Имеется возможность отключить запись дампа памяти или выбрать вариант с минимальным или максимальным его объемом, получением только дампа ядра или дампа без учета памяти, используемой виртуальными машинами. Также можно настроить запись события краха Windows в системный журнал и возможность перезагрузки ОС после записи дампа.
Принудительное аварийное завершение системы.
Для принудительного выполнения BSOD используется вызов специальной функции
KeBugCheck, которая обеспечивает аварийное завершение Windows с кодом ошибки
0xE2 (MANUALLY_INITIATED_CRASH). Если аварийный дамп памяти не был отключен настройками системы, то на этом этапе записывается файл аварийного дампа.
На практике для выполнения принудительного аварийного завершения Windows используется 2 приема:
- С помощью отладчика
KD или
WinDbg, работающего в режиме ядра, и ввода специальной команды
.crash (принудительное завершение работы системы) в командной строке.
- С помощью драйвера клавиатуры и специального сочетания клавиш.
Первый способ требует наличия на компьютере соответствующего отладчика, который устанавливается с набором инструментов разработчика
System Development Kit (SDK) или других пакетов средств отладки
Debugging Tools For Windows. Для скачивания требуется наличие учетной записи Microsoft. Процесс установки и использования отладчиков описан в документации конкретных пакетов, как правило – на английском языке.
Второй способ потребует небольших правок реестра. Драйверу клавиатуры необходимо разрешить режим вызова функции аварийного завершения системы по определенной комбинации клавиш. По умолчанию используется комбинация
правый CTRL + двойной Scroll Lock , т.е. при нажатом правом
Ctrl нужно дважды нажать
Scroll Lock.
Для разрешения драйверу клавиатуры выполнять вызов функции аварийного завершения системы необходимо к его параметрам в реестре добавить новый параметр типа
DWORD с именем
CrashOnCtrlScroll и значением
0x1. Драйвер клавиатуры, использующийся в конкретной системе, зависит от ее аппаратной платформы.
Наиболее распространенные варианты драйверов:
i8042 - драйвер на базе микроконтроллера Intel 8042, как правило, использующийся с клавиатурой c разъемом
PS/2 .
kbdhid - драйвер клавиатуры класса устройств USB для взаимодействия с человеком (Human Interface Device, HID).
hyperkbd - драйвер клавиатуры виртуальной машины Hyper-V
В случаях, когда требуется принудительное аварийное завершение виртуальных машин Oracle VM VirtualBox или Vmware, определить какой драйвер обслуживает клавиатуру в конкретной системе можно с помощью диспетчера устройств. В данном примере представлена информация диспетчера устройств виртуальной машины с Windows 10, работающей в среде физического компьютера с клавиатурой USB.
Как видно, в виртуальной машине используется драйвер клавиатуры i8042, что определяется параметрами данной виртуальной машины. Соответственно в раздел реестра
Parameters драйвера
i8042 нужно добавить ключ
CrashOnCtrlScroll типа DWORD, равный единице:
После перезагрузки по нажатию дважды
Scroll Lock при удерживаемом правом
CTRL выполнится аварийное завершение Windows 10 с ”синим экраном смерти” Stop E2:
Строка
80 % завершено - это процент записи дампа памяти в файл. Размер файла с дампом и время его записи зависят от объема оперативной памяти, степени ее использования системными и пользовательскими процессами, а также выбранного варианта записи дампа в настройках системы.
Для отключения возможности принудительного аварийного завершения Windows достаточно удалить параметр
CrashOnCtrlScroll или присвоить ему значение
0.