Для чего нужен файл дампа памяти. Проводим анализ дампа памяти или как выявить причину BSoD? Смотреть что такое "Дамп" в других словарях

Дамп памяти — это запись содержимого памяти компьютера, когда произошла серьезная ошибка. Он может включать всю системную память или только ту часть, которая была в использовании программой, которая перестала работать. Он может также включать другие соответствующие данные, такие как состояние процессора, содержимое регистров и информацию о запущенных процессах. Разработчики программного обеспечения часто используют дампы с отладчиками и другими утилитами, чтобы проанализировать и исправить ошибки компьютера. Дамп ядра также может использоваться для передачи рабочего процесса с одного процессора на другой во время нормальной работы.
Термин «дамп», вероятно, возник в 1960-х годах, когда первые компьютеры использовали магнитные ядра памяти. Когда работающая программа прекращала работать, все данные и весь каркас был напечатан на бумаге, чтобы помочь с отладкой. Эти данные печати обычно состояли из немного больше, чем только адреса памяти и данных в восьмеричном или шестнадцатеричном формате. В качестве технологий хранения данных, дампы могут быть сохранены на диске, съемной магнитной ленте или в энергонезависимой памяти. Большая емкость для хранения информации о состоянии наряду с достижениями в отладке программного обеспечения сделали диагностику ошибок более эффективными.

Типичные причины дампов — плохо написанные приложения или программное обеспечение системы. Довольно часто, программный код предполагает, что указатели и индексы массива всегда ссылаются на допустимую структуру данных. Если любой из них переходит за границы своих оригинальных конструкций, например, может произойти дамп памяти. Проблемы с доступом к файлам данных на устройстве хранения данных или чтение поврежденных данных может вызвать также дамп. Аппаратные проблемы, в том числе неисправная память, жесткий диск или процессор, также могут спровоцировать дамп.

Есть два типа дампов. Один тип, когда запущенный процесс или программа или приложение завершают работу и возвращают управление операционной системе. В данном случае, остальная система продолжает нормально функционировать, так как была остановлена только программа-нарушитель. Как правило, формируются большой файл дампа, который затем может быть загружен в отладчик. Если ошибка в программе, для которой доступны символы и исходный код, они могут быть загружены в отладчик.

Другой более серьезный тип дампа также называется паника ядра — это сообщение о критической ошибке ядра операционной системы. Этот тип сброса останавливает всю систему для того, чтобы предотвратить дальнейшие осложнения и повреждение данных. В Windows® системах, такого рода проблемы, как правило, происходят в привычном для нас виде «синего экрана смерти». Критическая ошибка ядра операционной системы, обычно сложнее для отладки и часто является следствием аппаратных или системных проблем.

Здравствуйте друзья, сегодня разберем интересную тему, которая поможет вам в будущем при появлении синего экрана смерти (BSoD).

Как и мне, так и многим другим пользователям приходилось наблюдать появление экрана с синим фоном, на котором что-то написано (белым по синему). Данное явление говорит о критической неполадке, как в программном обеспечении, например, конфликт драйверов, так и в физической неисправности какого-то компонента компьютера.

Недавно у меня снова появился голубой экран в Windows 10, но я быстро от него избавился и скоро об этом вам расскажу.

Хотите ? Тогда переходите по ссылке.

Итак, большинство пользователей не знают, что BSoD можно анализировать, чтобы впоследствии понять проблемы критической ошибки. Для таких случаев Windows создает на диске специальные файлы – , их то мы и будем анализировать.

Есть три типа дампа памяти:

Полный дамп памяти – эта функция позволяет полностью сохранить содержимое оперативной памяти. Он редко используется, так как представьте, что у вас 32 Гб оперативной памяти, при полном дампе весь этот объем сохранится на диске.

Дамп ядра – сохраняет информацию о режиме ядра.

Малый дамп памяти – сохраняет небольшой объем информации о ошибках и загруженных компонентов, которые были на момент появления неисправности системы. Мы будем использовать именно этот тип дампа, потому что она даст нам достаточное количество сведений о BSoD.

Расположение, как малого, так и полного дампа отличается, например, малый дамп находится по следующему пути: %systemroot%\minidump.

Полный дамп находится здесь: %systemroot%.

Для анализа дампов памяти существуют различные программы, но мы воспользуемся двумя. Первая — Microsoft Kernel Debuggers, как понятно из названия утилита от Microsoft. Скачать ее можно с официального сайта . Вторая программа – BlueScreenView, бесплатная программка, скачиваем отсюда .

Анализ дампа памяти с помощью Microsoft Kernel Debuggers

Для разных версий систем нужно скачивать свой тип утилиты. Например, для 64-х разрядной операционной системы, нужна 64-битовая программа, для 32-х разрядной – 32-битная версия.

Это еще не все, вам нужно скачать и установить пакет отладочных символов, нужные для программы. Называется Debugging Symbols. Каждая версия данного пакета тоже скачивается под определённою ОС, для начала узнайте какая у вас система, а потом скачивайте. Дабы вам не искать где попало эти символы, вот ссылка на скачивание . Установка, желательно, должна производиться по этому пути: %systemroot%\symbols.

Теперь можно запускать наш отладчик, окно которого будет выглядеть вот так:

Прежде чем проанализировать дампы мы кое-что настроим в утилите. Во-первых, нужно указать программе, куда мы установили отладочные символы. Для этого нажимаем на кнопку «File» и выбираем пункт «Symbol File Path», потом указываем путь до символов.


Программа позволяет извлекать символы прямо из сети, поэтому вам даже не придется их скачивать (извините те, кто уже скачал). Они буду браться с сервером Microsoft, поэтому все безопасно. Итак, вам нужно снова открыть «File», потом «Symbol File Path» и ввести следующую команду:

SRV*%systemroot%\symbols*http://msdl.microsoft.com/download/symbols


Таким образом мы указали программе, что символы должны браться из сети. Как только мы это сделали нажимаем «File» и выбираем пункт «Save Workspace», потом жмем ОК.

Вот и все. Мы настроили программу на нужный лад, теперь приступаем к анализу дампов памяти. В программе нажимаем кнопочку «File» , потом «Open Crash Dump» и выбираем нужный файл.

Kernel Debuggers начнет анализ файла и после этого выведет результат о причине ошибки.


В появившемся окне можно вводить команды. Если мы введем !analyze –v , то получим больше информации.

Вот и все с этой программой. Чтобы остановить работу отладчика, выберите «Debug» и пункт «Stop Debugging».

Анализ дампа памяти с помощью BlueScreenView

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

Скачайте программу по указанной выше ссылке и установите. После запуска утилиты нужно ее настроить. Зайдите в параметры: «Настройки» — «Дополнительные параметры». Откроется небольшое окошко, в котором есть пару пунктов. В первом пункте нужно указать местонахождение дампов памяти. Обычно они находятся по пути C:\WINDOWS\Minidump. Тогда просто нажмите кнопку «По умолчанию».


Что можно видеть в программе? У нас есть пункты меню, часть окна с названиями файлов дампов и вторая часть окна – содержимое дампов памяти.


Как я говорил в начале статьи, дампы могут хранить драйвера, сам скриншот «экрана смерти» и другая полезная информация, которая нам может пригодиться.

Итак, в первой части окна, где файлы дампов, выбираем нужный нам дамп памяти. В следующей части окна смотрим на содержимое. Красноватым цветом помечены драйвера, находившиеся в стеке памяти. Как раз они и есть причина синего экрана смерти.

В интернете можно найти все о коде ошибке и драйвере, который может быть виной BSoD. Для этого нажимаем «Файл», а потом «Найти в Google код ошибки + Драйвер» .


Можно сделать показ только драйверов, которые были на момент появления ошибки. Для этого нужно нажать «Настройки» — «Режим нижнего окна» — «Только драйвера, найденные в крэш-стеке». Либо нажать клавишу F7.

Чтобы показать скриншот BSoD нажмите клавишу F8.

Для показа всех драйверов и файлов нажимаем F6.

Ну вот собственно и все. Теперь вы знаете, как узнать о проблеме «Синего экрана смерти», и в случае чего найти решение в интернете, либо на этом сайте. Можете предлагать свои коды ошибок, а я постараюсь писать для каждой статьи по решению проблемы.

Также не забывайте задавать вопросы в комментариях.

Файл с содержимым базы данных, позволяющий воссоздать базу данных «с нуля»; создается при помощи дампера .

  • Экранный дамп - скриншот в том формате, как он хранится в видеопамяти.
  • См. также


    Wikimedia Foundation . 2010 .

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

      дамп - дамп/ … Морфемно-орфографический словарь

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

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

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

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

      дамп - а, ч., спец. Дані, отримані при розвантаженні пам яті комп ютера, або дані, що переводяться з одного запам ятовуючого пристрою до іншого. Зробити дамп пам яті …

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

      дампінг - у, ч. Поховання відходів у морі … Український тлумачний словник

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

      - (англ. memory dump; в Unix core dump) содержимое рабочей памяти одного процесса, ядра или всей операционной системы. Также может включать дополнительную информацию о состоянии программы или системы, например значения регистров… … Википедия

    Книги

    • Мой продуктивный год. Как я проверил самые известные методики личной эффективности на себе , Крис Бэйли , Цитата`Можете не верить, но апокалипсис с участием зомби происходит прямо сейчас. Если вы выглянете в окно, то вы увидите ходячих мертвецов. Они не могут ни на чем толком сосредоточиться, у… Категория: Менеджмент и управление Издатель: Альпина Паблишер , Производитель: Альпина Паблишер ,
    • Стартап по Кавасаки Проверенные методы начала любого дела , Кавасаки Г. , Цитата Что касается стартапов, то я успел не раз наступить на все хранящиеся там грабли. Пора, как говорят компьютерщики, "сохранить дамп памяти" -записать все, что мне известно. За эти… Категория:

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

    Дамп памяти (memory dump) - содержимое рабочей памяти процесса, ядра или всей операционной системы, включающий, помимо рабочих областей, дополнительную информацию о состоянии регистров процессора, содержимом стека и прочие служебные структуры.

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

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

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

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

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

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

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

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

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

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

    1. Нажать правой кнопкой мыши на значке "Мой Компьютер" - "Свойства" - "Дополнительные параметры системы" - "Дополнительно".
    2. Кнопка "Пуск" - "Панель управления" - "Система" - "Дополнительные параметры системы" - "Дополнительно".
    3. Сочетание клавиш "Windows" + "Pause" - "Дополнительные параметры системы" - "Дополнительно".

    4. control system.cpl,3
    5. Выполнить в командной строке (cmd):
      SystemPropertiesAdvanced

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

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

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

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

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

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

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

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

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

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

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

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

    В дампе памяти ядра отсутствуют нераспределенные страницы памяти и страницы пользовательского режима. Согласитесь, ведь маловероятно, что страницы процесса пользовательского режима будут нам интересны при системном сбое (BugCheck), поскольку обычно системный сбой инициируется кодом режима ядра.

    Объем: Варьируется в зависимости от размера адресного пространства ядра, выделенной операционной системой и количества драйверов режима ядра. Обычно, требуется около трети объема физической памяти в файле подкачки (либо в файле, указанном в DedicatedDumpFile). Может варьироваться.

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

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

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

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

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

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

    После изменения конфигурации дампа памяти Windows, может потребоваться перезагрузка компьютера.

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

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

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

    Параметры:

    Параметр Тип Описание
    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 тоже имеется подобная возможность. Однако метод получения дампа "на лету" не точен, поскольку дамп создается в этом случае "противоречивый", так как для создания дампа требуется время, а в случае использования отладчика режима ядра система продолжает работать и вносить изменения в страницы памяти.