- Создание ядра или полного аварийного дампа Generate a kernel or complete crash dump
- Настройка файлов страниц Set up page files
- Включить параметр сброса памяти Enable memory dump setting
- Советы по генерации свалок памяти Tips to generate memory dumps
- Вручную создать файл сброса памяти Manually generate a memory dump file
- Использование средства NotMyFault Use the NotMyFault tool
- Использование NMI Use NMI
- Использование дампа памяти для диагностики сбоев
- Что такое дамп
- Как система создает файл аварийного дампа памяти
- Разновидности дампов
- Анализ дампа памяти
Создание ядра или полного аварийного дампа Generate a kernel or complete crash dump
Сбой системы (также известный как «проверка ошибки» или «Остановка ошибки») происходит, когда Windows не может работать правильно. A system crash (also known as a “bug check” or a «Stop error») occurs when Windows can’t run correctly. Файл сброса, который производится из этого события, называется сбросом сбоя системы. The dump file that is produced from this event is called a system crash dump.
Ручной файл сброса ядра или полного файла памяти полезен при устранении нескольких проблем, так как процесс записи системной памяти во время сбоя. A manual kernel or complete memory dump file is useful when you troubleshoot several issues because the process captures a record of system memory at the time of a crash.
Настройка файлов страниц Set up page files
См. поддержку свалок сбоя системы для требования к размеру файла страницы для сбоя системы. See Support for system crash dumps for the page file size requirement for system crash dump.
Включить параметр сброса памяти Enable memory dump setting
Для выполнения этой процедуры необходимо войти в систему в качестве администратора или члена группы администраторов. You must be logged on as an administrator or a member of the Administrators group to complete this procedure. Если компьютер подключен к сети, параметры сетевой политики могут помешать вам завершить эту процедуру. If your computer is connected to a network, network policy settings may prevent you from completing this procedure.
Чтобы включить параметр сброса памяти, выполните следующие действия: To enable memory dump setting, follow these steps:
В панели управлениявыберите систему и систему > безопасности. In Control Panel, select System and Security > System.
Выберите параметры расширенных систем, а затем выберите вкладку Advanced. Select Advanced system settings, and then select the Advanced tab.
В области запуска и восстановления выберите Параметры. In the Startup and Recovery area, select Settings.
Убедитесь, что сброс памяти ядра или полная свалка памяти выбраны в статье Writing Debugging Information. Make sure that Kernel memory dump or Complete memory dump is selected under Writing Debugging Information.
Перезагрузите компьютер. Restart the computer.
Вы можете изменить путь файла сброса, редактировать поле файла Dump. You can change the dump file path by edit the Dump file field. Другими словами, можно изменить путь с %SystemRoot%\Memory.dmp на локальный диск с достаточным диском, например E:\Memory.dmp. In other words, you can change the path from %SystemRoot%\Memory.dmp to point to a local drive that has enough disk space, such as E:\Memory.dmp.
Советы по генерации свалок памяти Tips to generate memory dumps
При сбое и перезапуске компьютера содержимое физической оперативной памяти передается в файл paging, расположенный на разделе, на котором установлена операционная система. When the computer crashes and restarts, the contents of physical RAM are written to the paging file that is located on the partition on which the operating system is installed.
В зависимости от скорости жесткого диска, на котором установлена Windows, сброс более 2 гигабайт (ГБ) памяти может занять длительное время. Depending on the speed of the hard disk on which Windows is installed, dumping more than 2 gigabytes (GB) of memory may take a long time. Даже в лучшем случае, если файл сброса настроен для проживания на другом локальном жестком диске, значительное количество данных будет прочитано и записано на жесткие диски. Even in a best case scenario, if the dump file is configured to reside on another local hard drive, a significant amount of data will be read and written to the hard disks. Это может привести к длительному отключению сервера. This can cause a prolonged server outage.
Используйте этот метод для создания полных файлов сброса памяти с осторожностью. Use this method to generate complete memory dump files with caution. В идеале это следует делать только при явном запросе инженера службы поддержки Майкрософт. Ideally, you should do this only when you are explicitly requested to by the Microsoft Support engineer. Отладка файлов сброса ядра или полного файла памяти должна быть последней инстанцией после полного исчерпания всех стандартных методов устранения неполадок. Any kernel or complete memory dump file debugging should be the last resort after all standard troubleshooting methods have been completely exhausted.
Вручную создать файл сброса памяти Manually generate a memory dump file
Использование средства NotMyFault Use the NotMyFault tool
Если во время проблемы можно войти в систему, можно использовать средство Microsoft Sysinternals NotMyFault. If you can log on while the problem is occurring, you can use the Microsoft Sysinternals NotMyFault tool. Для этого выполните следующие действия: To do this, follow these steps:
Выберите Начните, а затем выберите командную подсказку. Select Start, and then select Command Prompt.
В командной строке запустите следующую команду: At the command line, run the following command:
Эта операция создает файл сброса памяти и ошибку остановки D1. This operation generates a memory dump file and a D1 Stop error.
Использование NMI Use NMI
На некоторых компьютерах нельзя использовать клавиатуру для создания файла аварийного сброса. On some computers, you cannot use keyboard to generate a crash dump file. Например, Hewlett-Packard (HP) BladeSystem из компании Hewlett-Packard разработки управляются с помощью графического пользовательского интерфейса (GUI) на основе браузера. For example, Hewlett-Packard (HP) BladeSystem servers from the Hewlett-Packard Development Company are managed through a browser-based graphical user interface (GUI). Клавиатура не присоединена к серверу HP BladeSystem. A keyboard is not attached to the HP BladeSystem server.
В этих случаях необходимо создать полный файл аварийного сбоя или файл аварийного сброса ядра с помощью переключателя NMI, который вызывает NMI на системном процессоре. In these cases, you must generate a complete crash dump file or a kernel crash dump file by using the Non-Maskable Interrupt (NMI) switch that causes an NMI on the system processor.
Для этого выполните следующие действия: To do this, follow these steps:
Внимательно следуйте шагам в этом разделе. Follow the steps in this section carefully. Неправильное изменение реестра может привести к серьезным проблемам. Serious problems might occur if you modify the registry incorrectly. Перед его изменением необходимо создать реестр для восстановления в случае возникновения проблем. Before you modify it, back up the registry for restoration in case problems occur.
В редакторе реестра найдите следующий подкай реестра: In Registry Editor, locate the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl
Правой кнопкой мыши CrashControl, указать на Новый, а затем нажмите значение DWORD. Right-click CrashControl, point to New, and then click DWORD Value.
Введите NMICrashDump и нажмите кнопку Ввод. Type NMICrashDump, and then press Enter.
Щелкните правой кнопкой мыши NMICrashDumpи выберите Изменение. Right-click NMICrashDump, and then select Modify.
В поле Значение данных введите 1, а затем выберите ОК. In the Value data box, type 1, and then select OK.
Перезагрузите компьютер. Restart the computer.
Поставщики оборудования, такие как HP, IBM и Dell, могут предоставить функцию автоматического восстановления системы (ASR). Hardware vendors, such as HP, IBM, and Dell, may provide an Automatic System Recovery (ASR) feature. Эту функцию следует отключить во время устранения неполадок. You should disable this feature during troubleshooting. Например, если функция ASR HP и Compaq включена в BIOS, отключим эту функцию во время устранения неполадок, чтобы создать полный файл Memory.dmp. For example, if the HP and Compaq ASR feature is enabled in the BIOS, disable this feature while you troubleshoot to generate a complete Memory.dmp file. Для точных действий обратитесь к поставщику оборудования. For the exact steps, contact your hardware vendor.
Включите переключатель NMI в BIOS или с помощью веб-интерфейса Integrated Lights Out (iLO). Enable the NMI switch in the BIOS or by using the Integrated Lights Out (iLO) Web interface.
Точные действия см. в справочном руководстве BIOS или обратитесь к поставщику оборудования. For the exact steps, see the BIOS reference manual or contact your hardware vendor.
Протестировать этот метод на сервере с помощью коммутатора NMI для создания файла сброса. Test this method on the server by using the NMI switch to generate a dump file. Вы увидите неисправность 0x00000080 stop. You will see a STOP 0x00000080 hardware malfunction.
Если вы хотите запустить NMI в Microsoft Azure с помощью серийной консоли, см. в рубрике Использование последовательной консоли для вызовов SysRq и NMI. If you want to run NMI in Microsoft Azure using Serial Console, see Use Serial Console for SysRq and NMI calls.
Использование дампа памяти для диагностики сбоев
Одним из наиболее часто встречающихся отказов работы Windows — системные исключения, которые пользователь видит в виде «синего экрана смерти» (BSOD). Как правило, эта фатальная ошибка возникает или из-за неисправности драйверов, оборудования (чаще при загрузке ОС) или из-за действия вирусов и антивирусов.
На синем экране смерти содержится информация о причинах, вызвавших исключение (в виде кода STOP-ошибки вида 0x0000007b), адреса в памяти, при обращении к которым произошло исключение и прочая полезная информация. Такая информация называется STOP-ошибкой, переменными параметрами которой как раз являются адреса памяти. Иногда там же содержится имя файла, вызвавшего исключение.
Вся эта информация содержится на экране недолго (до 100 сек.), после чего компьютер перезагружается. Во это непродолжительное время как правило, формируется дамп памяти, который записывается в файл. Один из важных профессиональных способов диагностики сбоев — анализ дампа памяти, о котором речь подробно пойдет в этой статье.
Что такое дамп
- dump (англ.) – мусорная куча; свалка; дыра; трущоба.
- dump (memory dump) – 1) дамп, вывод содержимого оперативной памяти на печать или экран; 2) «снимок» оперативной памяти; данные, получаемые в результате дампинга; 3) аварийное снятие, выключение, сброс.
- dumping – дампинг, снятие дампа.
Настройки для сохранения дампа памяти хранятся в системном реестре Windows.
Информация о дампе памяти в системном Реестре:
В разделе Реестра Windows [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl] аварийный дамп памяти определяется следующими параметрами:
– REG_DWORD-параметр AutoReboot со значением 0×1 (опция Выполнить автоматическую перезагрузку вспомогательного окна Загрузка и восстановление диалогового окна Свойства системы);
– REG_DWORD-параметр CrashDumpEnabled со значением 0×0, если дамп памяти не создается; 0×1 – Полный дамп памяти; 0×2 – Дамп памяти ядра; 0×3 – Малый дамп памяти (64КБ);
– REG_EXPAND_SZ-параметр DumpFile со значением по умолчанию %SystemRoot%\MEMORY.DMP (место хранения файла дампа);
– REG_DWORD-параметр LogEvent со значением по умолчанию 0×1 (опция Записать событие в системный журнал окна Загрузка и восстановление);
– REG_EXPAND_SZ-параметр MinidumpDir со значением по умолчанию %SystemRoot%\Minidump (опция Папка малого дампа окна Загрузка и восстановление);
– REG_DWORD-параметр Overwrite со значением по умолчанию 0×1 (опция Заменять существующий файл дампа окна Загрузка и восстановление);
– REG_DWORD-параметр SendAlert со значением по умолчанию 0×1 (опция Отправить административное оповещение окна Загрузка и восстановление).
Как система создает файл аварийного дампа памяти
Во время загрузки операционная система проверяет параметры создания аварийного дампа в разделе реестра [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl]. Если указан хотя бы один параметр, то система генерирует карту блоков диска, занимаемых файлом подкачки на загрузочном томе, и сохраняет ее в памяти. Система также определяет, какой драйвер дискового устройства управляет загрузочным томом, вычисляет контрольные суммы для образа драйвера в памяти и для структур данных, которые должны быть целыми, чтобы драйвер мог выполнять операции ввода/вывода.
После сбоя ядро системы проверяет целостность карты страничного файла, дискового драйвера и управляющих структур дискового драйвера. Если целостность этих структур не нарушена, то ядро системы вызывает специальные функции ввода/вывода дискового драйвера, предназначенные для сохранения образа памяти после системного сбоя. Эти функции ввода/вывода самодостаточны и не полагаются на службы ядра системы, поскольку в программах, отвечающих за запись аварийного дампа, нельзя делать никаких предположений о том, какие части ядра системы или драйверы устройств при сбое были повреждены. Ядро системы записывает данные из памяти по карте секторов файла подкачки (при этом ему не приходится использовать драйверы файловой системы).
Сначала ядро системы проверяет состояние каждого компонента, задействованного в процессе сохранения дампа. Это делается для того, чтобы при прямой записи в секторы диска не повредить данные, лежащие вне страничного файла. Размер страничного файла должен быть на 1МБ больше размера физической памяти, потому что при записи информации в дамп создается заголовок, в котором содержатся сигнатура аварийного дампа и значения нескольких важнейших переменных ядра системы. Заголовок занимает меньше 1МБ, но операционная система может увеличивать (или уменьшать) размер файла подкачки не менее чем на 1МБ.
После загрузки системы Session Manager (Диспетчер сеанса Windows NT; дисковый адрес – \WINDOWS\system32\smss.exe) инициализирует страничные файлы системы, используя для создания каждого файла собственную функцию NtCreatePagingFile. NtCreatePagingFile определяет, существует ли инициализируемый страничный файл, и если да, то имеется ли в нем заголовок дампа. Если заголовок есть, то NtCreatePagingFile посылает в Session Manager специальный код. После этого Session Manager запускает процесс Winlogon (Программа входа в систему Windows NT; дисковый адрес – \WINDOWS\system32\winlogon.exe), который извещается о существовании аварийного дампа. Winlogon запускает программу SaveDump (Программа сохранения копии памяти Windows NT; дисковый адрес – \WINDOWS\system32\savedump.exe), которая анализирует заголовок дампа и определяет дальнейшие действия в аварийной ситуации.
Если заголовок указывает на существование дампа, то SaveDump копирует данные из страничного файла в файл аварийного дампа, имя которого задано REG_EXPAND_SZ-параметром DumpFile раздела Реестра [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl]. Пока SaveDump переписывает файл дампа, операционная система не задействует ту часть страничного файла, в которой содержится аварийный дамп. В это время объем виртуальной памяти, доступной для системы и приложений, уменьшается на размер дампа (при этом на экране могут появиться сообщения, указывающие на нехватку виртуальной памяти). Затем SaveDump информирует диспетчер памяти о завершении сохранения дампа, и тот высвобождает ту часть страничного файла, в которой хранится дамп, для общего пользования.
Сохранив файл дампа, программа SaveDump делает запись о создании аварийного дампа в журнале событий Система, например: «Компьютер был перезагружен после критической ошибки: 0x100000d1 (0xc84d90a6, 0×00000010, 0×00000000, 0xc84d90a6). Копия памяти сохранена: C:\WINDOWS\Minidump\Mini060309-01.dmp».
Если включена опция Отправить административное оповещение, то SaveDump отправляет оповещение администратору.
Разновидности дампов
- Полный дамп памяти записывает всё содержимое системной памяти при возникновении неустранимой ошибки. Для этого варианта необходимо иметь на загрузочном томе файл подкачки, размер которого равен объему всей физической оперативной памяти плюс 1МБ. По умолчанию полный дамп памяти записывается в файл %SystemRoot%\Memory.dmp. При возникновении новой ошибки и создании нового файла полного дампа памяти (или дампа памяти ядра) предыдущий файл заменяется (перезаписывается). Параметр Полный дамп памяти недоступен на ПК, на которых установлена 32-битная операционная система и 2 или более гигабайта оперативной памяти.
При возникновении новой ошибки и создании нового файла полного дампа памяти предыдущий файл заменяется.
- Дамп памяти ядра записывает только память ядра, благодаря чему процесс записи данных в журнал при внезапной остановке системы протекает быстрее. В зависимости от объема физической памяти ПК в этом случае для файла подкачки требуется от 50 до 800МБ или одна треть физической памяти компьютера на загрузочном томе. По умолчанию дамп памяти ядра записывается в файл %SystemRoot%\Memory.dmp.
Этот дамп не включает нераспределенную память или память, выделенную для программ пользовательского режима. Он включает только память, выделенную для ядра и аппаратно-зависимого уровня (HAL) в Windows 2000 и более поздних версиях системы, а также память, выделенную для драйверов режима ядра и других программ режима ядра. В большинстве случаев такой дамп является наиболее предпочтительным вариантом. Он занимает намного меньше места по сравнению с полным дампом памяти, при этом исключая только те сектора памяти, которые, скорее всего, не связаны с ошибкой.
При возникновении новой ошибки и создании нового файла дампа памяти ядра предыдущий файл заменяется.
- Малый дамп памяти записывает наименьший объем полезной информации, необходимых для определения причины неполадок. Для создания малого дампа памяти необходимо, чтобы размер файла подкачки составлял как минимум 2МБ на загрузочном томе.
Файлы малого дампа памяти содержат следующие сведения:
- сообщение о неустранимой ошибке, ее параметры и прочие данные;
- список загруженных драйверов;
- контекст процессора (PRCB), на котором произошел сбой;
- сведения о процессе и контекст ядра (EPROCESS) для процесса, вызвавшего ошибку;
- сведения о процессе и контекст ядра (ETHREAD) для потока, вызвавшего ошибку;
- стек вызовов в режиме ядра для потока, вызвавшего ошибку.
Файл малого дампа памяти используется при ограниченном пространстве жесткого диска. Однако из-за ограниченности содержащихся в нем сведений в результате анализа этого файла не всегда удается обнаружить ошибки, которые не были непосредственно вызваны потоком, выполнявшимся в момент ее возникновения.
При возникновении следующей ошибки и создании второго файла малого дампа памяти предыдущий файл сохраняется. Каждому дополнительному файлу дается уникальное имя. Дата закодирована в имени файла. Например, Mini051509-01.dmp — это первый файл дампа памяти, созданный 15 мая 2009 г. Список всех файлов малого дампа памяти хранится в папке %SystemRoot%\Minidump.
Операционная система Windows XP, несомненно, значительно надежнее предыдущих версий, – благодаря усилиям как разработчиков Microsoft, так и разработчиков драйверов аппаратного обеспечения, так и разработчиков прикладного программного обеспечения. Однако аварийные ситуации – всевозможные сбои и крахи системы – неизбежны, и от того, владеет ли пользователь ПК знаниями и навыками в их устранении, зависит, придется ему затратить несколько минут на поиск и устранение неисправности (например, на обновление/отладку драйвера или переустановку прикладной программы, вызывающей системный сбой), – или несколько часов на переустановку/настройку операционной системы и прикладного программного обеспечения (что не гарантирует отсутствия сбоев и крахов в дальнейшем!).
Многие системные администраторы всё еще пренебрегают анализом аварийных дампов Windows, считая, что работать с ними слишком трудно. Трудно, но можно: даже если, например, анализ одного дампа из десяти окажется успешным, – усилия, потраченные на освоение простейших приемов анализа аварийных дампов, будут не напрасны.
Приведу примеры из своей «сисадминской» практики.
В локальной сети без видимой причины («железо» в порядке, отсутствие вирусов гарантировано, пользователи – с «нормальными руками») «полегли» несколько рабочих станций с Windows XP SP1/SP2 «на борту». Компьютеры загрузить в нормальном режиме не удавалось, – доходило до «Приветствия» – и на перезагрузку до бесконечности. При этом, в Безопасном режиме ПК загружались.
Изучение дампов памяти позволило выявить причину неисправности: виновником оказался антивирус Касперского, точнее, свежие антивирусные базы (если еще точнее, то два модуля баз – base372c.avc, base032c.avc).
…Еще был такой случай. На локальном ПК с Windows XP SP3 при попытке открыть видеофайлы форматов .avi и .mpeg происходила перезагрузка. Изучение дампа памяти позволило выявить причину неисправности – файл nv4_disp.dll драйвера видеокарты NVIDIA GeForce 6600. После обновления драйвера неисправность была устранена. Вообще, драйвер nv4_disp.dll — один из самых нестабильных драйверов, который часто приводил к BSOD.
В обоих указанных случаях изучение аварийного дампа памяти позволило до минимума (несколько минут!) свести время для диагностирования и устранения неисправности.
Анализ дампа памяти
Для анализа аварийных дампов памяти существует множество программ, например, DumpChk, Kanalyze, WinDbg. Рассмотрим анализ аварийных дампов памяти с помощью программы WinDbg (входит в состав Debugging Tools for Windows).