В статье рассказывается о том, как анализировать дампы, появляющиеся при возникновении синих экранов с помощью утилиты WinDBG.
Введение
Синий экран смерти (Blue Screen of Death — BSoD) — это название критического сбоя в операционных системах Windows. Он появляется когда в ядре или драйвере возникает неустранимая ошибка. Единственным возможным действием после появления синего экрана является перезагрузка. Поэтому по умолчанию, перезагрузка происходит автоматически сразу после появления синего экрана.
Но просто так перезагрузить компьютер и работать дальше может обычный пользователь. IT специалисту необходимо проанализировать ситуацию и понять причину возникновения сбоя. А также желательно обезопасить себя заранее возможностью восстановить работу системы в случае невозможности загрузиться после сбоя.
В этой статье описаны действия, которые помогут вернуть работоспособность системы в некоторых случаях.
- Настройка точек восстановления.
- Отображение вариантов восстановления системы.
А также, описано как включить создание автоматических дампов при появлении синих экранов. И описан процесс анализа этих дампов с помощью приложения WinDBG.
Если вам интересно, можете почитать статью на хабре: Краткая история «синего экрана смерти».
Создание точек восстановления
Я рекомендую на компьютерах под управлением Windows сразу делать некоторые настройки, которые затем могут облегчить вам жизнь. Во-первых нужно настроить автоматическое создание точек восстановления. Для этого зайтиде в «Параметры системы» (Пуск / Параметры). Затем выберите пункт «Система», дальше «О программе» и справа будет пункт «Защита системы».
В открывшемся окне, на вкладке «Защита системы» вы можете создавать точки восстановления вручную перед опасными действиями. Например перед установкой неизвестной вам программы или драйвера, или перед проверкой диска (chkdsk
) или драйверов (verifier
).
Я также рекомендую включить автоматическую защиту хотя-бы для диска на котором у вас установлена система, чтобы точки восстановления делались автоматически перед каждым обновлением. Для этого нажмите «Настроить» и в открывшемся окне поставьте переключатель в положение «Включить защиту системы» и укажите максимальный объём хранилища для хранения точек восстановления.
Отображение вариантов восстановления системы и создание дампов
Во-вторых желательно заранее включить отображение вариантов восстановления системы при её загрузке. В противном случае система после сбоя перезагрузится и без показа инструментов восстановления начнётся автоматическое восстановление системы, которое не всегда срабатывает.
Чтобы включить отображение вариантов восстановления системы зайдите в настройки системы «Пуск / Параметры». Затем перейдите по пунктам «Система / О программе» и справа выберите вариант «Дополнительные параметры системы».
В открывшемся окне «Свойства системы» на вкладке «Дополнительно», в области «Загрузка и восстановление» нажмите кнопку «Параметры…». В открывшемся окне «Загрузка и восстановление» поставьте галку «Отображать варианты восстановления».
После включения этой опции, при сбоях в системе, компьютер будет перезагружаться и показывать меню с вариантами восстановления:
Дополнительно, здесь-же, включите создание дампов, они будут создаваться при Синих экранах. Поставьте галки: «Записать событие в системный журнал» и «Выполнить автоматическую перезагрузку». Тип дампа можете оставить «Автоматический дамп памяти» если у вас всё нормально со свободным местом на диске, или «Малый дамп памяти» для экономии места. Оба эти типа дампов показывают достаточную информацию для анализа проблемы.
Также поставьте галку «Заменять существующий файл дампа» — чтобы у вас хранилось некоторое число дампов а не один последний. И снимите галку «Отключить автоматическое удаление дампов при нехватке мета на диске» — чтобы не забить диск в случае нехватки места на нём.
Установка WinDBG
И так, вы настроили автоматическое создание дампов, они будут создаваться при сбоях в системе (BSoD). Теперь пришло время научиться анализировать эти дампы.
Утилита WinDBG входит в состав Windows SDK дистрибутив которого можно скачать от сюда. Последняя версия дистрибутива подойдёт для Windows 11 версии 21h2 и выше, Windows 10 версии 1507 и выше, Windows 8.1, Windows 7 с пакетом обновления 1 (SP1).
После скачивания дистрибутива (winsdksetup.exe) запустите его установку. В процессе установки вам нужно выбрать только один компонент: Debugging Tools for Windows.
После установки, ярлык WinDBG появится в меню «Пуск».
Для удобства можно настроить ассоциацию файлов .dmp с программой WinDBG. Для этого в выполните команду:
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64windbg.exe –IA
После чего увидите такое окно:
Ещё нужно настроить отладочные символы. Для этого запустите WinDBG и перейдите в меню «File / Symbol File Path». Пропишите там строчку:
SRV*C:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols
Здесь каталог C:\Sym_WinDBG будет использован в качестве кеша, а сами отладочные символы будут скачиваться с сервера microsoft.
Анализ дампа с помощью WinDBG
Чтобы открыть дамп запустите программу от имени администратора и перейдите по меню «File / Open Crash Dump».
Дампы по умолчанию лежат в каталоге C:\Windows\Minidump и имеют расширение .dmp.
После открытия дампа выполните команду !analyze -v
чтобы выполнить его анализ. После выполнения анализа внимательно посмотрите на его вывод. Здесь я приведу 2 примера с сокращением вывода, оставлю только важные моменты.
Пример №1:
******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* VIDEO_SCHEDULER_INTERNAL_ERROR (119) The video scheduler has detected that fatal violation has occurred. This resulted in a condition that video scheduler can no longer progress. Any other values after parameter 1 must be individually examined according to the subtype. Arguments: Arg1: 0000000000000002, The driver failed upon the submission of a command. Arg2: ffffffffc000000d Arg3: ffff8105edb48960 Arg4: ffffa40cfc149f70 PROCESS_NAME: System MODULE_NAME: dxgmms2 IMAGE_NAME: dxgmms2.sys
В примере выше мы видим ошибку VIDEO_SCHEDULER_INTERNAL_ERROR (119), описание ошибок смотрим здесь, в даном примере нужно искать 0x00000119. Эта ошибка указывает на то, что планировщик видео обнаружил фатальное нарушение.
У ошибки есть аргументы, в нашем случае Arg1: 0000000000000002, что означает — драйверу не удалось выполнить команду.
Ниже мы видим что в момент ошибки выполнялся процесс System. А ошибка произошла в модуле dxgmms2.sys, этот модуль отвечает за управление графическими задачами в Windows.
В этом случае можно попробовать обновить драйвер видеокарты. Но возможна и аппаратная проблема с видеокартой или перегрев. Также дело может быть в ПО: например в ПО для записи экрана или антивирусе.
Пример №2:
******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* SYSTEM_SERVICE_EXCEPTION (3b) An exception happened while executing a system service routine. Arguments: Arg1: 00000000c0000005, Exception code that caused the BugCheck Arg2: fffff8014d5050a8, Address of the instruction which caused the BugCheck Arg3: ffffde046c1c4a70, Address of the context record for the exception that caused the BugCheck Arg4: 0000000000000000, zero. PROCESS_NAME: SearchFilterHost.exe SYMBOL_NAME: nt!ObpDeleteDirectoryEntry+18 MODULE_NAME: nt IMAGE_NAME: ntkrnlmp.exe
Здесь ошибка SYSTEM_SERVICE_EXCEPTION (3b). То есть искать описание нужно для 0x0000003D. Она указывает на ошибку при переходе от непривилегированного кода к привилегированному. Обычно это значит что произошло нарушение прав доступа. Но в моём случае связанным процессом был SearchFilterHost.exe. Возможно что проблема с диском и синий экран произошел когда служба Windows Search проводила индексирование файлов. Здесь можно проверить диск (chkdsk
), временно выключить службу Windows Search и понаблюдать за системой. Если синий экран повторяется, проанализировать его снова, возможно процесс уже будет другим. Дополнительно можете выполнить восстановление системных файлов (sfc
и DISM
).
При анализе дампов главное внимательно прочитать вывод и смотреть здесь коды ошибок и их описание.
Тестируем драйвера с помощью Verifier
Дополнительно вы можете сделать краш-тест для драйверов. Для этого используется встроенная утилита — Driver Verifier. Предварительно обезопасьте себя создав точку восстановления и включив отображение вариантов восстановления системы.
Для запуска Driver Verifier выполните команду verifier
. В списке задач выберите Создать стандартные параметры и нажмите Далее. Затем выберите вариант тестирования из списка:
- Автоматически выбирать неподписанные драйверы.
- Автоматически выбирать драйверы для прошлых версий Windoows.
- Автоматически выбирать все драйверы, установленные на этом компьютере.
- Выбрать имя драйвера из списка.
Я обычно выбираю «Выбрать имя драйвера из списка» и помечаю подозрительные драйверы. Это почти все, которые поставляются не Microsoft. После запуска вам нужно будет перезагрузить систему. И после загрузки, драйверы начнут тестироваться, а если будет найдена ошибка, то произойдет синий экран с сохранением дампа.
Если синий экран не появляется в течении дня или нескольких, то можете выключить тестирование с помощью команды verifier /reset
. Само тестирование не выключается, даже после перезагрузки системы. Проверить, выполняется ли тестирование в данный момент, можно с помощью команды: verifier /query
.
Если после включения теста ваша система начнёт циклически падать в Синий экран. То вас спасёт загрузка в безопасном режиме, в котором вы можете выключить тестирование или выполнить откат к точке восстановления.
Если понравилась статья, подпишись на мой канал в VK.