Что значит дампы памяти

Что значит дампы памяти

Дамп 32-х битной операционной системы Windows содержит FFFF FFFF16 или 429496729510 (2 32 — 1) байт. Бо́льшая их часть содержит значение по умолчанию — число 0. Дамп можно логически разделить на сегменты по 64 кб (FFFF16), поэтому .com файлы операционной системы Windows не могут превышать этого размера, размещаясь только в одном сегменте, однако, программа может передавать управление над выполнением функции в другие сегменты. При запуске .com файлов весь код файла без изменений заносится в один из незанятых другими процессами сегментов.

Дамп содержит данные и команды различных процессов, как пользовательских приложений так и ядра операционной системы (в частности все прерывания BIOS, они же стандартные функции). Также в дампе содержатся значения регистров процессора и содержимое различных стеков, системное время и другие переменные среды.

См. также

Ссылки

Форматы дампа памяти в различных операционных системах:

  • core(5) — страница справки man для разработчика Linux — форматы файлов (англ.)
  • core(4) — страница справки man по форматам файлов Solaris 10 (англ.)
  • core(4) — страница справки man по форматам файлов HP-UX 11i (англ.)
  • core(5) — страница справки man по форматам файлов FreeBSD (англ.)
  • core(5) — страница справки man по форматам файлов OpenBSD (англ.)
  • core(5) — страница справки man по форматам файлов NetBSD (англ.)
  • core(5) — страница справки man по форматам файлов Darwin и Mac OS X (англ.)
  • Windows: функции для работы с minidump
  • Анализ дампа памяти

Wikimedia Foundation . 2010 .

Смотреть что такое "Дамп памяти" в других словарях:

дамп памяти — рампа памяти — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия Синонимы рампа памяти EN memory dump … Справочник технического переводчика

ДАМП ПАМЯТИ — Копия содержимого оперативной памяти на внешнем носителе (бумаге, магнитном диске и т. п.) Словарь бизнес терминов. Академик.ру. 2001 … Словарь бизнес-терминов

ДАМП — 1. Распечатка содержимого памяти ЭВМ или файла, обычно без учета внутренней структуры данных. Копия содержимого регистров, нужного участка оперативной памяти, блока данных или файла выводится на печать последовательно, байт за байтом, в форме… … Словарь бизнес-терминов

Дамп — В Викисловаре есть статья «дамп» Дамп (англ. dump «мусорная куча, свалка; выбрасывать, вываливать») снимок инф … Википедия

дамп — Данные, представляющие собой полное или частичное содержимое оперативной памяти, выводимое на периферийное устройство. [ГОСТ 19781 90] дамп свалка аварийное снятие сброс Данные, получаемые в результате разгрузки памяти и используемые для поиска… … Справочник технического переводчика

ДАМП — ДАМП, в вычислительной технике информация, скопированная из памяти компьютера на выходное или записывающее устройство. Это может быть целый файл, перенесенный на другой диск, или текст, отправленный на печать прямо с экрана (экранный дамп) … Научно-технический энциклопедический словарь

дамп — а; м. Спец. Данные, полученные при разгрузке памяти компьютера или переводимые из одного запоминающего устройства в другое … Энциклопедический словарь

Дамп — 55. Дамп Dump Данные, представляющие собой полное или частичное содержимое оперативной памяти, выводимое на периферийное устройство Источник: ГОСТ 19781 90: Обеспечение систем обработки информации программное. Термины и определения … Словарь-справочник терминов нормативно-технической документации

дамп — а; м.; спец. Данные, полученные при разгрузке памяти компьютера или переводимые из одного запоминающего устройства в другое … Словарь многих выражений

Отладчик использования памяти — (англ. memory debugger) инструментальное программное обеспечение для обнаружения утечек памяти и переполнений буфера. Это происходит из за ошибок, связанных с выделением и освобождением динамической памяти. Программы, написанные на… … Википедия

Чтобы исправить синий экран смерти необходимо выявить причину его появления. Для этого нужно проанализировать аварийный файл дампа памяти. Анализ аварийного дампа можно провести различными способами. Об этом как раз и поговорим в этой статье.

Что нужно знать, про файл дампа?

В предыдущей статье на сайте мы уже писали про причины, которые чаще всего приводят к синему экрану смерти. Также показали как правильно настроить создание аварийных дампов памяти и рассказали где хранится этот самый файл дампа. Мельком коснулись того, что по стоп коду и по информации из дамп файла можно путём анализа точнее выяснить причину приведшую к BSOD.
Осталось узнать как и с помощью чего можно проанализировать информацию из дамп файла. Рассмотрим несколько способов, включающих как инструмент анализа от самих разработчиков Windows так и сторонние инструменты.

Анализ дамп файла с помощью Microsoft Kernel Debugger.

Microsoft Kernel Debugger — специальная утилита для анализа крэш дампов. Скачать саму утилиту, а также необходимые для её работы компоненты можно с сайта Microsoft — Debugging tools. Версия пакета Debugging Tools for Windows должна соответствовать разрядности операционной системы. Подробно про то где и как скачать эту утилиту писал тут.
Вместе с самим отладчиком необходимо ещё скачать набор отладочных символов — Debugging Symbols . Набор символов, также различается для каждой версии Windows, включая и по разрядности. Таким образом, для 32-х разрядной Windows 7 необходимо скачать пакет символов Windows 7 x32, а для 64-х битной Windows 7 набор символов Windows 7 x64. Таким же образом нужно выбирать набор символов и для других версий Windows (widows 10, XP и т.д.). Нужный набор символов также можно скачать в самом отладчике, но об этом ниже.
После установки утилиты и набора отладочных символов, можно запустить сам отладчик. После запуска необходимо в его настройках указать ему путь до отладочных символов. Для этого:
Нажмите на кнопку File ⇒ Symbol File Path.
Далее нажмите кнопку Browse и укажите папку куда сохранили набор символов.
Скачать самую новую версию символов можно с помощью самой утилиты. Для этого в поле File ⇒ Symbol File Path. введите:
SRV*C:symbols*http://msdl.microsoft.com/download/symbols
Далее нажмите на File ⇒ Save workspace и затем нажмите на ОК.
Таким образом утилита запросит информацию об отладочных символах через интернет напрямую с сервера Microsoft .
Для того, чтобы приступить к анализу нажмите на File > Open Crash Dump… и укажите требуемый файл дампа памяти (малый дамп памяти).
Система проведёт анализ дампа и по результатам выдаст возможную причину ошибки.
Кликнув по гиперссылке !analyse-v откроется более расширенная информация по ошибке.
Завершить отладку можно с помощью пункта меню Debug > Stop Debugging.

Читайте также:  Centos 7 установить графический интерфейс

Анализ файла дампа с BlueScreenView

BlueScreenView это бесплатная утилита для анализа файла малого аварийного дампа памяти. Данная утилита имеет поддержку русского языка. Основным плюсом данной программы является то, что для её работы не нужно скачивать отладочные символы. Это делает эту утилиту полностью автономной и независимой. Еще одним плюсом данной программы является наличие портабельной версии, то есть версии, которую не нужно устанавливать в систему. Автором программы является Nier Sofer. Скачать можно с официального сайта автора . Портабельную версию программы можно скачать по ссылке на официальной странице, в названии которого, в скобках указано in Zip file. При скачивании важно учитывать разрядность вашей ОС.
Пролистав чуть ниже можно скачать файл русификации — BlueScreenView_lng.ini , который нужно просто закинуть в папку с самой программой. Я подготовил для скачивания программу с уже настроенным языком. Вот прямые ссылки:

А теперь непосредственно про процедуру анализа.

Как провести анализ файла дампа с BlueScreenView?

После запуска программа сразу сканирует стандартную директорию хранения файла дампа — %SystemRoot%Minidump . Директорию можно изменить в дополнительных параметрах программы. Интерфейс окна программы условно можно поделить на 3 области:

  • Верхняя область кнопок меню
  • Средняя область со списком файлов дампов
  • Нижняя область со списком драйверов


Данные анализа выводятся в табличном виде. Перечислю наиболее важные из столбцов средней области интерфейсного окна программы (в скобках наименование из англ. версии):

  • Текст ошибки (Bug Check String). Здесь выводится описание ошибки согласно классификации MicroSoft. В нашем примере это DRIVER_IRQL_NOT_LESS_OR_EQUAL .
  • Код ошибки (Bug Check Code). Выводится СТОП-код ошибки — 0x000000d1
  • Драйвер причины (Caused By Driver). Отображает наименование драйвера либо модуля, который вероятнее всего вызвал ошибку. Заметьте, это 100% виновник ошибки, а лишь вероятный. В нашем примере это E1G6032E.sys
  • Адрес причины (Caused By Address). Отображает драйвер и сразу после адрес инструкций, вызвавших сбой. У нас это E1G6032E.sys+9ef530 /li>
  • Адрес аварии (Crash Address). Адрес по которому случилась ошибка. В нашем случае ntoskrnl.exe+1509a0 .

Теперь перечислю наиболее важные столбцы из нижней области:

  • Имя файла (File name). Указывается наименование драйвера либо модуля
  • Адрес в стеке (Address In Stack). Выводится адрес памяти драйвера из стека памяти.
  • Описание файла (File Description).
  • Версия файла (File Version). Отображается версия файла драйвера.

Данная небольшая заметка ставит целью своей показать, каким же образом можно сконфигурировать систему, чтобы получить в своё распоряжение аварийный дамп памяти Windows, то есть дамп, который может быть создан в случае возникновения критического сбоя, характеризующегося появлением синего экрана смерти (BSOD). Что же такое дамп вообще, для чего он нам требуется и что из себя представляет, какие проблемы он призван решить и какую информацию содержит в себе?

Для чего нам может потребоваться данное содержимое, то есть дамп памяти Windows? Пожалуй, наиболее часто дамп памяти используется для изучения причин возникновения системного сбоя (BSOD), который явился причиной полного останова операционной системы. В дополнение к этому, состояние памяти может использоваться и для других целей. Немаловажен и тот факт, что дамп памяти — это буквально единственный способ получения информации о любом сбое! А снятие (получение) дампа памяти системы — это, фактически, единственный точный метод получения мгновенного отпечатка (копии) содержимого физической памяти системы.

Чем точнее содержимое дампа будет отражать состояние памяти в момент сбоя, тем подробнее мы сможем проанализировать аварийную ситуацию. Поэтому крайне важно получить именно актуальную копию физической памяти системы в строго определенный момент времени, непосредственно предшествующий сбою. А единственный способ сделать это — создать полный аварийный дамп памяти. Причина достаточно тривиальна — когда происходит создание аварийного дампа памяти системы, в результате ли сбоя, либо в следствии искусственно смоделированной ситуации, система в этот момент получения управления аварийными функциями ( KeBugCheckEx ) пребывает в абсолютно неизменном (статичном) состоянии, поэтому между моментом возникновения сбоя и моментом окончания записи данных на носитель ничто не изменяет содержимое физической памяти, и она в оригинальном состоянии записывается на диск. Ну это в теории, а в жизни изредка, но встречаются ситуации, что по причине неисправных аппаратных компонентов, сам дамп памяти может быть поврежден, или в процессе записи дампа станция может подвиснуть.

Читайте также:  Нет интернета после перезагрузки роутера

Теоретически, статичность (неизменность) "отпечатка" памяти объясняется тем, что когда вызывается функция KeBugCheckEx , выводящая на экран информацию о сбое и стартующая процесс создания дампа памяти, система уже полностью остановлена и содержимое физической памяти записано в блоки, занимаемые на диске файлом подкачки, после чего, уже в процессе последующей загрузки операционной системы оно сбрасывается в файл на системном носителе. Ну а практически один раз наблюдал ситуацию, когда сбоящая материнская плата не давала сохранить дамп памяти: а) подвисая в процессе работы логики сохранения дампа (процесс не доходил до 100%), б) повреждая файл дампа памяти (отладчик ругался на структуры), в) записывая файлы дампов memory.dmp нулевой длины. Поэтому, не смотря на то, что система в момент создания дампа памяти уже полностью остановлена, и работает только аварийный код, сбойное железо может вносить свои коррективы в любую без исключения логику на любом этапе функционирования.
Традиционно, на начальном этапе для сохранения дампа памяти Windows используются блоки диска, выделенные файлу подкачки (pagefile). Затем, после возникновения синего экрана и перезагрузки, данные перемещаются в отдельный файл, а затем файл переименовывается по шаблону, зависящему от типа дампа. Однако, начиная с версии Windows Vista, подобное положение вещей возможно изменить, теперь пользователю дана возможность сохранять выделенный дамп без участия файла подкачки, помещая информацию о сбое во временный файл. Сделано это для того, чтобы исключить ошибки конфигурации, связанные с неправильной настройкой размера и положения файла подкачки, что зачастую приводило к проблемам в процессе сохранения дампа памяти.
Давайте посмотрим, какие же разновидности дампов позволяет нам создавать операционная система Windows:

  • Дамп памяти процесса (приложения);
  • Дамп памяти ядра;
  • Полный дамп памяти (дамп доступной части физической памяти системы).

Все аварийные дампы можно разделить на две основных категории:

  • Аварийные дампы с информацией о возникшем исключении . Обычно создаются в автоматическом режиме, когда в приложении/ядре возникает необрабатываемое исключение (unhandled exception) и, соответственно, может быть вызван системный (встроенный) отладчик. В этом случае информация об исключении записывается в дамп, что упрощает определение типа исключения и места возникновения при последующем анализе.
  • Аварийные дампы без информации об исключении . Обычно создаются пользователем в ручную, когда необходимо создать просто мгновенный снимок процесса для последующего анализа. Анализ этот подразумевает не определение типа исключения, поскольку никакого исключения и не возникало, а анализ совершенно другого рода, например изучение структур данных процесса и прочее.

Конфигурация дампа памяти ядра

Давайте непосредственно перейдем к конфигурированию параметров аварийного дампа памяти Windows. Для начала, нам необходимо зайти в окно свойств системы одним и приведенных способов:

  1. Нажать правой кнопкой мыши на значке "Мой Компьютер" — "Свойства" — "Дополнительные параметры системы" — "Дополнительно".
  2. Кнопка "Пуск" — "Панель управления" — "Система" — "Дополнительные параметры системы" — "Дополнительно".
  3. Сочетание клавиш "Windows" + "Pause" — "Дополнительные параметры системы" — "Дополнительно".
  4. Выполнить в командной строке (cmd):
    control system.cpl,,3
  5. Выполнить в командной строке (cmd):
    SystemPropertiesAdvanced

Результатом описанных действий является открытие окна "Свойства системы" и выбор вкладки "Дополнительно":

После этого в разделе "Загрузка и восстановление" мы нажимаем выбираем "Параметры" и тем самым открываем новое окно под названием "Загрузка и восстановление":

Все параметры аварийного дампа сгруппированы в блоке параметров под названием "Отказ системы". В этом блоке мы можем задать следующие параметры:

  1. Записать события в системный журнал.
  2. Выполнить автоматическую перезагрузку.
  3. Запись отладочной информации.
  4. Файл дампа.
  5. Заменять существующий файл дампа.

Как видите, многие параметры из списка достаточно тривиальны и просты в понимании. Однако, я бы хотел подробнее остановиться на параметре "Файл дампа". Параметр представлен в виде ниспадающего списка, и имеет четыре возможных значения:

Малый дамп памяти (Small memory dump)

Малый дамп памяти (минидамп, minidump) — это файл, который содержит наименьший объем информации о сбое. Самый маленький из всех возможных дампов памяти. Не смотря на очевидные минусы, зачастую именно минидампы используются в качестве информации о сбое для передачи поставщику сторонних драйверов с целью последующего изучения.
Состав:

  • Сообщение об ошибке.
  • Значение ошибки.
  • Параметры ошибки.
  • Контекст процессора ( PRCB ), на котором произошел сбой.
  • Сведения о процессе и контекст ядра ( EPROCESS ) для процесса, являющего причиной сбоя, со всеми его потоками.
  • Сведения о процессе и контекст ядра ( ETHREAD ) для потока, являющегося причиной сбоя.
  • Стек режима ядра для потока, который явился причиной сбоя.
  • Список загруженных драйверов.
Читайте также:  Как отследить письмо по штрих коду

Размещение: %SystemRoot%MinidumpMMDDYY-XXXXX-NN.dmp . Где MMDDYY — месяц, день и год соответственно, NN — порядковый номер дампа.
Объем: Размер зависит от разрядности операционной системы: требуется всего-то 128 килобайт для 32-разрядной и 256 килобайт для 64-разрядной ОС в файле подкачки (либо в файле, указанном в DedicatedDumpFile). Поскольку выставить столь малый размер мы не сможем, то округляем до 1 мегабайта.

Дамп памяти ядра (Kernel memory dump)

Данный тип дампа содержит копию всей памяти ядра на момент сбоя.
Состав:

  • Список исполняющихся процессов.
  • Состояние текущего потока.
  • Страницы памяти режима ядра, присутствующие в физической памяти в момент сбоя: память драйверов режима ядра и память программ режима ядра.
  • Память аппаратно-зависимого уровня (HAL).
  • Список загруженных драйверов.

В дампе памяти ядра отсутствуют нераспределенные страницы памяти и страницы пользовательского режима. Согласитесь, ведь маловероятно, что страницы процесса пользовательского режима будут нам интересны при системном сбое (BugCheck), поскольку обычно системный сбой инициируется кодом режима ядра.
Размещение: %SystemRoot%MEMORY.DMP . Предыдущий дамп перезаписывается.
Объем: Варьируется в зависимости от размера адресного пространства ядра, выделенной операционной системой и количества драйверов режима ядра. Обычно, требуется около трети объема физической памяти в файле подкачки (либо в файле, указанном в DedicatedDumpFile). Может варьироваться.

Полный дамп памяти (Complete memory dump)

Полный дамп памяти содержит копию всей физической памяти (ОЗУ, RAM) в момент сбоя. Соответственно, в файл попадает и все содержимое памяти системы. Это одновременно преимущество и главный недостаток, поскольку размер его на некоторых серверах с большим объемом ОЗУ может оказаться существенным.
Состав:

  • Все страницы "видимой" физической памяти. Это практически вся память системы, за исключением областей, используемых аппаратной частью: BIOS, пространство PCI и прч.
  • Данные процессов, которые выполнялись в системе в момент сбоя.
  • Страницы физической памяти, которые не отображены на виртуальное адресное пространство, но которые могут помочь в изучении причин сбоя.

В полный дамп памяти не включаются, по-умолчанию, области физической памяти, используемой BIOS.
Размещение: %SystemRoot%MEMORY.DMP . Предыдущий дамп перезаписывается.
Объем: В файле подкачки (либо в файле, указанном в DedicatedDumpFile) требуется объем, равный размеру физической памяти + 257 мегабайт (эти 257 Мб делятся на некий заголовок + данные драйверов). На деле же, в некоторых ОС, нижний порог файла подкачки можно выставить точно в значение размера физической памяти.

Автоматический дамп памяти (Automatic memory dump)

Начиная с Windows 8/Windows Server 2012, в систему введен новый тип дампа под названием "Автоматический дамп памяти", который устанавливается типом по умолчанию. В этом случае система сама решает, какой дамп памяти записать в ситуации того или иного сбоя. Причем логика выбора зависит от многих критериев, в том числе от частоты "падения" операционной системы.

Параметры реестра

Раздел реестра, который определяет параметры аварийного дампа:

Параметр Тип Описание
AutoReboot REG_DWORD Включение/отключение автоматической перезагрузки при возникновении BSOD.
CrashDumpEnabled REG_DWORD Вид создаваемого дампа.
  • 0 — не создавать дамп памяти;
  • 1 — полный дамп памяти;
  • 2 — дамп памяти ядра;
  • 3 — малый дамп памяти;
DumpFile REG_EXPAND_SZ Путь и название дампа памяти ядра и полного дампа памяти. DumpFilters REG_MULTI_SZ Драйвер-фильтр в стеке драйверов дампа памяти. Позволяет добавлять новый функционал на этапе создания аварийных дампов. Например, шифрование содержимого дампа. Изменять значение не рекомендуется. LogEvent REG_DWORD Запись события в системный журнал. MinidumpDir REG_EZPAND_SZ Путь и название малого дампа памяти. MinidumpsCount REG_DWORD Максимальное количество малых дампов памяти. При превышении начинают затираться более старые версии. Overwrite REG_DWORD Заменять существующий файл дампа. Только для дампа памяти ядра и полного дампа памяти. IgnorePagefileSize REG_DWORD Игнорирует стандартный файл подкачки как место для временного (промежуточного) хранения дампа памяти. Указывает на необходимость записать дамп памяти в отдельный файл. Используется совместно с опцией DedicatedDumpFile. DedicatedDumpFile REG_EZPAND_SZ Путь и название временного альтернативного файла для записи дампа памяти. Во втором проходе данные все равно будут перемещены в DumpFile/MinidumpDir.

Ручное создание дампа памяти

Выше мы описывали настройки для автоматического создания аварийных дампов системы в случае возникновения критической ошибки, то есть необрабатываемого исключения в коде ядра. Но ведь в реальной жизни, помимо падения операционной системы, существуют ситуации, когда необходимо получить дамп памяти системы в конкретный момент времени. Как быть в этом случае? Существуют методы получения мгновенной копии всей физической памяти, например с помощью команды .dump в отладчиках WinDbg/LiveKD. LiveKD — программа, позволяющая запускать отладчик ядра Kd в функционирующей системе в локальном режиме. В отладчике WinDbg тоже имеется подобная возможность. Однако метод получения дампа "на лету" не точен, поскольку дамп создается в этом случае "противоречивый", так как для создания дампа требуется время, а в случае использования отладчика режима ядра система продолжает работать и вносить изменения в страницы памяти.

Файлы настроек реестра

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

Ссылка на основную публикацию
Что делать если браузерные игры лагают
Что делать если зависает браузерная игра, не грузится, лагает? Если игра не загружается, зависает, загрузка останавливается на определенном шаге, вы...
Чем обработать сколы на машине от ржавчины
Получайте на почту один раз в сутки одну самую читаемую статью. Присоединяйтесь к нам в Facebook и ВКонтакте. 1. Если...
Чем опасно низкое напряжение в сети
Эффект «проседания» входного напряжения ниже установленной нормы довольно распространенная проблема. Она более характерна для электроснабжения в сельской местности, но нередко...
Что делать если взорвалось колесо
Вы когда-нибудь видели взрыв шины? Это поистине экстремальное зрелище, особенно если речь идёт о грузовом транспорте. Взрываясь на ходу, куски...
Adblock detector