Что такое дампы памяти
Дамп памяти в Windows – зачем нужен и как его включить
С критическими ошибками «оконной» ОС знаком практически каждый её пользователь, и появляющиеся при этом синие экраны смерти (BSoD) обычно ничего хорошего не предвещают. Они могут быть спровоцированы программными или аппаратными причинами, и поскольку источник неприятности не всегда очевиден, решение начинается с диагностических мероприятий.
Исправить ошибку бывает непросто, и часто самым полезным средством для диагностики причин возникшего сбоя становится дамп памяти, представляющий собой снимок состояния оперативной памяти операционки с отладочными сведениями. Причём в Windows не всегда активировано автоматическое создание и сохранение на жёсткий диск дампов памяти, тогда как в исправлении BSoD независимо от характера сбоя эти данные могут сильно помочь.
Для чего нужен дамп памяти Windows
Содержимое оперативной памяти и материалы, касающиеся сбоя, могут писаться в файл подкачки, при следующем старте операционки создаётся аварийный дамп с информацией об отладке, сформированной на базе сохранённых данных (ОС может создавать memory dump и минуя файл подкачки). В журнале событий будет сделана запись об ошибке, если данная опция настроена.
Вывод участка дампа 32-х битной ОС Windows с помощью программы Debug.exe
Тип записываемого дампа может задаваться в свойствах ОС, поддерживаются варианты:
*Дамп пользовательского режима представляет собой дамп определённого процесса. Так, содержимым может являться полная память процесса или фрагмент, список, стек, состояние потоков, списки библиотек, состояние потоков, дескрипторы объектов ядра.
Чаще всего аварийный дамп памяти Windows 7, 8, 10 используется в целях диагностики и позволяет выяснить, как исправить критическую ошибку. Проанализировав содержимое, можно понять, что стало причиной неполадки, и приступить к её устранению.
Как включить создание дампа памяти в Windows
Чтобы активировать автоматическое сохранение memory dump в Виндовс, нужно сделать следующее:
Как настроить дамп памяти в Windows
Настройки действий, производимых при аварийной остановке работы ОС, выполняются в том же окне, что и включение создания memory dump («Загрузка и восстановление»), куда мы попадаем из свойств системы.
Здесь можно настроить параметры запуска ОС и назначить определённые действия в случае её отказа, например:
При эксплуатации SSD лучше оставить тип записи «Автоматический дамп памяти», но если нужен файл аварийного дампа, лучше выставить «Малый дамп памяти», он самый лёгкий и его несложно переслать другому пользователю, если вам нужна помощь в анализе состояния.
Иногда может потребоваться увеличение размера файла подкачки больше, чем доступно в оперативке, чтобы он соответствовал полному дампу.
Прочитать memory dump можно посредством специализированных утилит, таких как Microsoft Kernel Debugger, BlueScreenView и других.
Установка WinDbg в Windows
Утилита, являющаяся отладчиком для юзермодных приложений и драйверов, позволяет проанализировать снимок памяти и выяснить, что спровоцировало BSoD. Поставляется она в составе пакета SDK для Windows 10, инсталлятор скачивается на сайте Microsoft. Для Семёрки и ранних версий систем WinDbg можно найти в пакете Microsoft Windows SDK for Windows 7 and NET Framework 4.
Анализ аварийного дампа памяти в WinDbg
Перед анализом memory dump необходимо выполнить некоторые настройки. Для работ с софтом понадобится пакет символов отладки Debugging Symbols, загруженный с учётом версии и разрядности системы.
Можно настроить извлечение утилитой символов из интернета, что безопасно, поскольку используется официальный ресурс компании Майкрософт.
Для того чтобы объекты при нажатии на них открывались посредством утилиты:
cd C:\Progran Files (x86)\Windows Kits\10\Debuggers\x64
exe –IA
cd C:\Progran Files (x86)\Windows Kits\10\Debuggers\x86
exe –IA
Настройка сервера отладочных символов
Отладочные символы, которые генерируются в процессе компиляции приложения вместе с исполняемым файлом, нужны при отладке. Настраиваем WinDbg на извлечение символов из сети:
Анализ memory dump в WinDbg
Чтобы перейти к процедуре, открываем объект в утилите (File – Open Crash Dump) или, если предварительно настраивались ассоциации файлов, открываем элемент щелчком мыши. Утилита начнёт анализировать файл, затем выдаст результат.
В окне предполагается ввод команд. Запрос «!analyze –v» позволит получить более детальные сведения о сбое (STOP-код, имя ошибки, стек вызовов команд, приведших к проблеме и другие данные), а также рекомендации по исправлению. Для остановки отладчика в меню программы жмём «Debug» – «Stop Debugging».
Как удалить файлы дампа памяти
Если понадобилось удалить memory dump, это можно выполнить вручную, пройдя по пути месторасположения объекта на диске. Так, в системном каталоге Windows нужно найти и удалить файл MEMORY.DMP, а также элементы в каталоге Minidump. Кроме того, можно использовать штатный инструмент системы «Очистка диска»:
Создание снимков бывает отключено, даже если вы когда-либо активировали эту функцию по причине деятельности специального софта. Если речь о SSD-накопителе, это могут быть программы для работы с твердотельными дисками. Отключение некоторых опций ОС выполняется ими с целью оптимизации работы, поскольку многократные процессы чтения/записи сокращают продолжительность жизни диска. Также причиной отключения дампа памяти могут быть различные программы очистки компьютера и оптимизации системы.
Что такое дамп памяти?
в Компьютеры 17.07.2017 0 270 Просмотров
Дамп памяти – это запись содержимого памяти компьютера, когда произошла серьезная ошибка. Он может включать всю системную память или только ту часть, которая была в использовании программой, которая перестала работать. Он может также включать другие соответствующие данные, такие как состояние процессора, содержимое регистров и информацию о запущенных процессах. Разработчики программного обеспечения часто используют дампы с отладчиками и другими утилитами, чтобы проанализировать и исправить ошибки компьютера. Дамп ядра также может использоваться для передачи рабочего процесса с одного процессора на другой во время нормальной работы.
Термин “дамп”, вероятно, возник в 1960-х годах, когда первые компьютеры использовали магнитные ядра памяти. Когда работающая программа прекращала работать, все данные и весь каркас был напечатан на бумаге, чтобы помочь с отладкой. Эти данные печати обычно состояли из немного больше, чем только адреса памяти и данных в восьмеричном или шестнадцатеричном формате. В качестве технологий хранения данных, дампы могут быть сохранены на диске, съемной магнитной ленте или в энергонезависимой памяти. Большая емкость для хранения информации о состоянии наряду с достижениями в отладке программного обеспечения сделали диагностику ошибок более эффективными.
Типичные причины дампов – плохо написанные приложения или программное обеспечение системы. Довольно часто, программный код предполагает, что указатели и индексы массива всегда ссылаются на допустимую структуру данных. Если любой из них переходит за границы своих оригинальных конструкций, например, может произойти дамп памяти. Проблемы с доступом к файлам данных на устройстве хранения данных или чтение поврежденных данных может вызвать также дамп. Аппаратные проблемы, в том числе неисправная память, жесткий диск или процессор, также могут спровоцировать дамп.
Есть два типа дампов. Один тип, когда запущенный процесс или программа или приложение завершают работу и возвращают управление операционной системе. В данном случае, остальная система продолжает нормально функционировать, так как была остановлена только программа-нарушитель. Как правило, формируются большой файл дампа, который затем может быть загружен в отладчик. Если ошибка в программе, для которой доступны символы и исходный код, они могут быть загружены в отладчик.
Другой более серьезный тип дампа также называется паника ядра – это сообщение о критической ошибке ядра операционной системы. Этот тип сброса останавливает всю систему для того, чтобы предотвратить дальнейшие осложнения и повреждение данных. В Windows® системах, такого рода проблемы, как правило, происходят в привычном для нас виде “синего экрана смерти”. Критическая ошибка ядра операционной системы, обычно сложнее для отладки и часто является следствием аппаратных или системных проблем.
Аварийный дамп памяти Windows
Данная небольшая заметка ставит целью своей показать, каким же образом можно сконфигурировать систему, чтобы получить в своё распоряжение аварийный дамп памяти Windows, то есть дамп, который может быть создан в случае возникновения критического сбоя, характеризующегося появлением синего экрана смерти (BSOD). Что же такое дамп вообще, для чего он нам требуется и что из себя представляет, какие проблемы он призван решить и какую информацию содержит в себе?
Все аварийные дампы можно разделить на две основных категории:
Конфигурация дампа памяти ядра
Давайте непосредственно перейдем к конфигурированию параметров аварийного дампа памяти Windows. Для начала, нам необходимо зайти в окно свойств системы одним и приведенных способов:
Результатом описанных действий является открытие окна «Свойства системы» и выбор вкладки «Дополнительно»:
После этого в разделе «Загрузка и восстановление» мы нажимаем выбираем «Параметры» и тем самым открываем новое окно под названием «Загрузка и восстановление»:
Все параметры аварийного дампа сгруппированы в блоке параметров под названием «Отказ системы». В этом блоке мы можем задать следующие параметры:
Как видите, многие параметры из списка достаточно тривиальны и просты в понимании. Однако, я бы хотел подробнее остановиться на параметре «Файл дампа». Параметр представлен в виде ниспадающего списка, и имеет четыре возможных значения:
Малый дамп памяти (Small memory dump)
Дамп памяти ядра (Kernel memory dump)
Данный тип дампа содержит копию всей памяти ядра на момент сбоя.
Состав:
Полный дамп памяти (Complete memory dump)
Полный дамп памяти содержит копию всей физической памяти (ОЗУ, RAM) в момент сбоя. Соответственно, в файл попадает и все содержимое памяти системы. Это одновременно преимущество и главный недостаток, поскольку размер его на некоторых серверах с большим объемом ОЗУ может оказаться существенным.
Состав:
Автоматический дамп памяти (Automatic memory dump)
Начиная с Windows 8/Windows Server 2012, в систему введен новый тип дампа под названием «Автоматический дамп памяти», который устанавливается типом по умолчанию. В этом случае система сама решает, какой дамп памяти записать в ситуации того или иного сбоя. Причем логика выбора зависит от многих критериев, в том числе от частоты «падения» операционной системы.
Параметры реестра
Раздел реестра, который определяет параметры аварийного дампа:
Параметр | Тип | Описание |
---|---|---|
AutoReboot | REG_DWORD | Включение/отключение автоматической перезагрузки при возникновении BSOD. |
CrashDumpEnabled | REG_DWORD | Вид создаваемого дампа. |
Ручное создание дампа памяти
Файлы настроек реестра
Использование дампа памяти для диагностики сбоев
Одним из наиболее часто встречающихся отказов работы Windows — системные исключения, которые пользователь видит в виде «синего экрана смерти» (BSOD). Как правило, эта фатальная ошибка возникает или из-за неисправности драйверов, оборудования (чаще при загрузке ОС) или из-за действия вирусов и антивирусов.
На синем экране смерти содержится информация о причинах, вызвавших исключение (в виде кода STOP-ошибки вида 0x0000007b), адреса в памяти, при обращении к которым произошло исключение и прочая полезная информация. Такая информация называется STOP-ошибкой, переменными параметрами которой как раз являются адреса памяти. Иногда там же содержится имя файла, вызвавшего исключение.
Вся эта информация содержится на экране недолго (до 100 сек.), после чего компьютер перезагружается. Во это непродолжительное время как правило, формируется дамп памяти, который записывается в файл. Один из важных профессиональных способов диагностики сбоев — анализ дампа памяти, о котором речь подробно пойдет в этой статье.
Что такое дамп
Настройки для сохранения дампа памяти хранятся в системном реестре Windows.
Информация о дампе памяти в системном Реестре:
В разделе Реестра Windows [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl] аварийный дамп памяти определяется следующими параметрами:
– REG_DWORD-параметр AutoReboot со значением 0x1 (опция Выполнить автоматическую перезагрузку вспомогательного окна Загрузка и восстановление диалогового окна Свойства системы);
– REG_DWORD-параметр CrashDumpEnabled со значением 0x0, если дамп памяти не создается; 0x1 – Полный дамп памяти; 0x2 – Дамп памяти ядра; 0x3 – Малый дамп памяти (64КБ);
– REG_EXPAND_SZ-параметр DumpFile со значением по умолчанию %SystemRoot%\MEMORY.DMP (место хранения файла дампа);
– REG_DWORD-параметр LogEvent со значением по умолчанию 0x1 (опция Записать событие в системный журнал окна Загрузка и восстановление);
– REG_EXPAND_SZ-параметр MinidumpDir со значением по умолчанию %SystemRoot%\Minidump (опция Папка малого дампа окна Загрузка и восстановление);
– REG_DWORD-параметр Overwrite со значением по умолчанию 0x1 (опция Заменять существующий файл дампа окна Загрузка и восстановление);
– REG_DWORD-параметр SendAlert со значением по умолчанию 0x1 (опция Отправить административное оповещение окна Загрузка и восстановление).
Как система создает файл аварийного дампа памяти
Во время загрузки операционная система проверяет параметры создания аварийного дампа в разделе реестра [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, 0x00000010, 0x00000000, 0xc84d90a6). Копия памяти сохранена: C:\WINDOWS\Minidump\Mini060309-01.dmp».
Если включена опция Отправить административное оповещение, то SaveDump отправляет оповещение администратору.
Разновидности дампов
При возникновении новой ошибки и создании нового файла полного дампа памяти предыдущий файл заменяется.
Этот дамп не включает нераспределенную память или память, выделенную для программ пользовательского режима. Он включает только память, выделенную для ядра и аппаратно-зависимого уровня (HAL) в Windows 2000 и более поздних версиях системы, а также память, выделенную для драйверов режима ядра и других программ режима ядра. В большинстве случаев такой дамп является наиболее предпочтительным вариантом. Он занимает намного меньше места по сравнению с полным дампом памяти, при этом исключая только те сектора памяти, которые, скорее всего, не связаны с ошибкой.
При возникновении новой ошибки и создании нового файла дампа памяти ядра предыдущий файл заменяется.
Файлы малого дампа памяти содержат следующие сведения:
Файл малого дампа памяти используется при ограниченном пространстве жесткого диска. Однако из-за ограниченности содержащихся в нем сведений в результате анализа этого файла не всегда удается обнаружить ошибки, которые не были непосредственно вызваны потоком, выполнявшимся в момент ее возникновения.
При возникновении следующей ошибки и создании второго файла малого дампа памяти предыдущий файл сохраняется. Каждому дополнительному файлу дается уникальное имя. Дата закодирована в имени файла. Например, Mini051509-01.dmp — это первый файл дампа памяти, созданный 15 мая 2009 г. Список всех файлов малого дампа памяти хранится в папке %SystemRoot%\Minidump.
Операционная система Windows XP, несомненно, значительно надежнее предыдущих версий, – благодаря усилиям как разработчиков Microsoft, так и разработчиков драйверов аппаратного обеспечения, так и разработчиков прикладного программного обеспечения. Однако аварийные ситуации – всевозможные сбои и крахи системы – неизбежны, и от того, владеет ли пользователь ПК знаниями и навыками в их устранении, зависит, придется ему затратить несколько минут на поиск и устранение неисправности (например, на обновление/отладку драйвера или переустановку прикладной программы, вызывающей системный сбой), – или несколько часов на переустановку/настройку операционной системы и прикладного программного обеспечения (что не гарантирует отсутствия сбоев и крахов в дальнейшем!).
Многие системные администраторы всё еще пренебрегают анализом аварийных дампов Windows, считая, что работать с ними слишком трудно. Трудно, но можно: даже если, например, анализ одного дампа из десяти окажется успешным, – усилия, потраченные на освоение простейших приемов анализа аварийных дампов, будут не напрасны.
Приведу примеры из своей «сисадминской» практики.
В локальной сети без видимой причины («железо» в порядке, отсутствие вирусов гарантировано, пользователи – с «нормальными руками») «полегли» несколько рабочих станций с Windows XP SP1/SP2 «на борту». Компьютеры загрузить в нормальном режиме не удавалось, – доходило до «Приветствия» – и на перезагрузку до бесконечности. При этом, в Безопасном режиме ПК загружались.
Изучение дампов памяти позволило выявить причину неисправности: виновником оказался антивирус Касперского, точнее, свежие антивирусные базы (если еще точнее, то два модуля баз – base372c.avc, base032c.avc).
В обоих указанных случаях изучение аварийного дампа памяти позволило до минимума (несколько минут!) свести время для диагностирования и устранения неисправности.
Анализ дампа памяти
Для анализа аварийных дампов памяти существует множество программ, например, DumpChk, Kanalyze, WinDbg. Рассмотрим анализ аварийных дампов памяти с помощью программы WinDbg (входит в состав Debugging Tools for Windows).
Дамп памяти
Дамп памяти (англ. memory dump ; в Unix — core dump ) — содержимое рабочей памяти одного процесса, ядра или всей операционной системы. Также может включать дополнительную информацию о состоянии программы или системы, например значения регистров процессора и содержимое стека. Многие операционные системы позволяют сохранять дамп памяти для отладки программы. Как правило, дамп памяти процесса сохраняется автоматически когда процесс завершается из-за критической ошибки (например, из-за ошибки сегментации). Дамп также можно сохранить вручную через отладчик или любую другую специальную программу.
Содержание
История
Английский термин core dump буквально переводится как «распечатка содержимого сердечников»: на ранних компьютерах, дамп означал принтерную распечатку содержимого памяти на магнитных сердечниках (англ. magnetic core memory ).
В Unix
В современных Unix-подобных операционных системах дамп памяти сохраняется в виде файла, который обычно называется core или core. ; его формат такой же, как формат исполняемых файлов этой ОС (ELF в Linux и современных Unix, a.out в традиционных Unix-системах, Mach-O в Mac OS X). Для анализа core-файла используется отладчик (например gdb) или инструмент objdump.
В Windows
В Windows, аналогом core dump’а является minidump, который позволяет сохранить частичную или полную информацию о процессе, в том числе и полное содержимое рабочей памяти.
Дамп системы
Дамп содержит данные и команды различных процессов, как пользовательских приложений так и ядра операционной системы (в частности все прерывания BIOS, они же стандартные функции). Также в дампе содержатся значения регистров процессора и содержимое различных стеков, системное время и другие переменные среды.
См. также
Ссылки
Форматы дампа памяти в различных операционных системах:
Полезное
Смотреть что такое «Дамп памяти» в других словарях:
дамп памяти — рампа памяти — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия Синонимы рампа памяти EN memory dump … Справочник технического переводчика
ДАМП ПАМЯТИ — Копия содержимого оперативной памяти на внешнем носителе (бумаге, магнитном диске и т. п.) Словарь бизнес терминов. Академик.ру. 2001 … Словарь бизнес-терминов
ДАМП — 1. Распечатка содержимого памяти ЭВМ или файла, обычно без учета внутренней структуры данных. Копия содержимого регистров, нужного участка оперативной памяти, блока данных или файла выводится на печать последовательно, байт за байтом, в форме… … Словарь бизнес-терминов
Дамп — В Викисловаре есть статья «дамп» Дамп (англ. dump «мусорная куча, свалка; выбрасывать, вываливать») снимок инф … Википедия
дамп — Данные, представляющие собой полное или частичное содержимое оперативной памяти, выводимое на периферийное устройство. [ГОСТ 19781 90] дамп свалка аварийное снятие сброс Данные, получаемые в результате разгрузки памяти и используемые для поиска… … Справочник технического переводчика
ДАМП — ДАМП, в вычислительной технике информация, скопированная из памяти компьютера на выходное или записывающее устройство. Это может быть целый файл, перенесенный на другой диск, или текст, отправленный на печать прямо с экрана (экранный дамп) … Научно-технический энциклопедический словарь
дамп — а; м. Спец. Данные, полученные при разгрузке памяти компьютера или переводимые из одного запоминающего устройства в другое … Энциклопедический словарь
Дамп — 55. Дамп Dump Данные, представляющие собой полное или частичное содержимое оперативной памяти, выводимое на периферийное устройство Источник: ГОСТ 19781 90: Обеспечение систем обработки информации программное. Термины и определения … Словарь-справочник терминов нормативно-технической документации
дамп — а; м.; спец. Данные, полученные при разгрузке памяти компьютера или переводимые из одного запоминающего устройства в другое … Словарь многих выражений
Отладчик использования памяти — (англ. memory debugger) инструментальное программное обеспечение для обнаружения утечек памяти и переполнений буфера. Это происходит из за ошибок, связанных с выделением и освобождением динамической памяти. Программы, написанные на… … Википедия