Дамп ядра

редактировать
Запись данных памяти компьютера за один момент

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

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

Содержание
  • 1 Предпосылки
  • 2 Использует
  • 3 Анализ
  • 4 Файлы дампа ядра
    • 4.1 Формат
    • 4.2 Именование
      • 4.2.1 OS / 360 и последователи
      • 4.2.2 Unix-подобные
      • 4.2. 3 Другое
    • 4.3 Дампы памяти Windows
      • 4.3.1 Дампы режима ядра
      • 4.3.2 Дампы памяти пользовательского режима
  • 5 Космические миссии
  • 6 См. Также
  • 7 Ссылки
  • 8 Примечания
  • 9 Внешние ссылки
Предпосылки

Название происходит от памяти с магнитным сердечником, основной формы оперативной памяти с 1950-х годов до 1970-е годы. Название осталось еще долгое время после того, как технология магнитных сердечников устарела.

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

По мере увеличения объема памяти и разработки утилит для посмертного анализа дампы записывались на магнитные носители, такие как лента или диск.

Вместо отображения только содержимого соответствующей памяти современные операционные системы обычно генерируют файл, содержащий изображение памяти, принадлежащей аварийному процессу, или образы памяти частей адресного пространства , связанных с этим процессом, наряду с другой информацией, такой как значения регистров процессора, счетчика программ, системных флагов и другой информацией, полезной для определения основной причины сбоя. Эти файлы можно просматривать в виде текста, распечатывать или анализировать с помощью специальных инструментов, таких как elfdump в Unix и Unix-подобных системах, objdump и kdump. в Linux, WinDbg в Microsoft Windows, Valgrind или других отладчиках.

Использует

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

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

Дампы ядра позволяют пользователю сохранить сбой для более позднего или удаленного анализа или сравнения с другими сбоями. Для встроенных компьютеров поддержка отладки на самом компьютере может быть непрактичной, поэтому анализ дампа может выполняться на другом компьютере. Некоторые операционные системы, такие как ранние версии Unix, не поддерживали подключение отладчиков к запущенным процессам, поэтому для запуска отладчика содержимого памяти процесса были необходимы дампы ядра.

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

Анализ

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

Отладчик может использовать таблицу символов, если таковая существует, чтобы помочь программисту интерпретировать дампы, символически идентифицируя переменные и отображая исходный код; если таблица символов недоступна, возможна меньшая интерпретация дампа, но все же может быть достаточно возможностей для определения причины проблемы. Существуют также специальные инструменты под названием анализаторы дампа для анализа дампа. Одним из популярных инструментов, доступных во многих операционных системах, является GNU binutils 'objdump.

. В современных Unix-подобных операционных системах администраторы и программисты могут читать файлы дампа памяти с помощью GNU Binutils Библиотека дескрипторов двоичных файлов (BFD), а также GNU Debugger (gdb) и objdump, которые используют эту библиотеку. Эта библиотека предоставит необработанные данные для заданного адреса в области памяти из дампа памяти; он ничего не знает о переменных или структурах данных в этой области памяти, поэтому приложение, использующее библиотеку для чтения дампа памяти, должно будет определять адреса переменных и определять расположение структур данных само, например, с помощью таблицы символов для отлаживаемой программы.

Аналитики аварийных дампов из систем Linux могут использовать kdump или дамп ядра Linux (LKCD).

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

Ядро также может быть выгружено на удаленный хост по сети (что представляет собой угрозу безопасности).

Файлы дампа ядра

Формат

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

На IBM System / 360 стандартные операционные системы записывали отформатированные дампы ABEND и SNAP с адресами, регистрами, содержимым хранилища и т. Д., Преобразованными в формы для печати. В более поздних выпусках добавлена ​​возможность записи неформатированных дампов, которые в то время назывались дампами основного образа.

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

В Unix-подобных системах в дампах ядра обычно используется стандартный исполняемый файл image- формат :

Именование

OS / 360 и последующие

  • В OS / 360 и последующих задание может назначать произвольные имена наборов данных (DSN) для ddnames SYSABENDи SYSUDUMPдля форматированного дампа ABEND и произвольным ddname для дампа SNAP, или определять эти ddnames как SYSOUT.
  • Средство оценки и устранения повреждений (DAR) добавило автоматический неформатированный дамп в набор данных SYS1.DUMPво время сбоя, а также дамп консоли, запрошенный оператором.
  • Новый дамп транзакции очень похож на старые формы дампов.

Unix-подобный

  • Начиная с Solaris 8, системная утилита coreadmпозволяет настраивать имя и расположение файлов ядра.
  • Свалки пользовательских процессов традиционно создаются как core. В Linux (начиная с версий 2.4.21 и 2.6 основной ветки ядра Linux ) другое имя можно указать через procfs с помощью / proc / sys / kernel / core_patternфайл конфигурации; указанное имя также может быть шаблоном, который содержит теги, замененные, например, именем исполняемого файла, идентификатором процесса или причиной дампа.
  • Часто появляются общесистемные дампы в современных Unix-подобных системах как vmcoreили vmcore.incomplete.

Другие

  • Системы, такие как Microsoft Windows, которые используют расширения имени файла, могут использовать расширение .dmp; например, дампы ядра могут называться memory.dmpили \ Minidump \ Mini051509-01.dmp.

дампы памяти Windows

Microsoft Windows поддерживает два описанных формата дампа памяти ниже.

Дампы режима ядра

Существует пять типов дампов режима ядра:

  • Полный дамп памяти - содержит полную физическую память целевой системы.
  • Память ядра дамп - содержит всю память, используемую ядром во время сбоя.
  • Малый дамп памяти - содержит различную информацию, такую ​​как код остановки, параметры, список загруженных драйверов устройств и т. д.
  • Автоматический дамп памяти (Windows 8 и новее) - то же самое, что дамп памяти ядра, но если файл подкачки является одновременно управляемым системой и слишком мал для захвата дамп памяти ядра, он автоматически увеличит подкачку файл, по крайней мере, до размера ОЗУ в течение четырех недель, затем уменьшите его до меньшего размера.
  • Дамп активной памяти (Windows 10 и новее) - содержит большую часть памяти, используемой ядром и приложениями пользовательского режима.

Для анализа дампов режима ядра Windows используются средства отладки для Windows.

Дампы памяти пользовательского режима

Дамп памяти пользовательского режима, также известный как минидамп, я s дамп памяти одного процесса. Он содержит выбранные записи данных: полную или частичную (отфильтрованную) память процесса; список потоков с их стеками вызовов и состоянием (например, регистрами или TEB ); информация о обрабатывает объекты ядра; список загруженных и выгруженных библиотек. Полный список опций доступен в перечислении MINIDUMP_TYPE.

Космические миссии

Программа NASA Voyager была, вероятно, первым аппаратом регулярно использовать функцию дампа ядра в сегменте Deep Space. Функция дампа ядра является обязательной функцией телеметрии для сегмента Deep Space, поскольку, как было доказано, минимизирует затраты на диагностику системы. Корабль "Вояджер" использует обычные дампы ядра, чтобы определить повреждение памяти от событий космических лучей.

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

См. Также
Ссылки
Примечания
Внешние ссылки

Описание формата файла

Дампы ядра ядра:

Последняя правка сделана 2021-05-15 12:21:58
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте