stringtranslate.com

Дамп ядра

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

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

Фон

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

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

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

Вместо того, чтобы отображать только содержимое соответствующей памяти, современные операционные системы обычно генерируют файл, содержащий образ памяти, принадлежащей аварийному процессу, или образы памяти частей адресного пространства , связанных с этим процессом, а также другую информацию, такую ​​как в качестве значений регистров процессора, счетчика программ, системных флагов и другой информации, полезной для определения основной причины сбоя. Эти файлы можно просмотреть как текст, распечатать или проанализировать с помощью специализированных инструментов, таких как elfdump в Unix и Unix-подобных системах, objdump и kdump в Linux , IPCS (интерактивная система контроля проблем) в IBM z/OS , [7] DVF ( Средство просмотра дампов) в IBM z/VM , [8] WinDbg в Microsoft Windows, Valgrind или других отладчиках.

В некоторых операционных системах [b] приложение или оператор могут запросить снимок выбранных блоков хранилища, а не всего хранилища, используемого приложением или операционной системой.

Использование

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

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

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

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

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

Анализ

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

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

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

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

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

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

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

Формат

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

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

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

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

Именование

OS/360 и его преемники

Unix-подобный

Другие

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

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

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

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

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

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

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

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

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

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

Смотрите также

Рекомендации

  1. ^ «Информация об AIX 7.1» .[ постоянная мертвая ссылка ]
  2. ^ core(5) : Файл ядра процесса -  Справочное руководство по форматам файлов Solaris 11.4.
  3. Кори Янссен (25 октября 2012 г.). «Что такое дамп базы данных? - Определение из Techopedia». Techopedia.com . Архивировано из оригинала 20 августа 2015 года . Проверено 29 июня 2015 г.
  4. ^ «Как настроить компьютер для записи полного дампа памяти» . sophos.com . 12 июля 2010 г. Архивировано из оригинала 1 июля 2015 г. Проверено 29 июня 2015 г.
  5. ^ Оксфордский словарь английского языка , sv 'core'
  6. ^ «Определение дампа хранилища» . Архивировано из оригинала 11 мая 2013 г. Проверено 3 апреля 2013 г.
  7. ^ Роджерс, Пол; Кэри, Дэвид (август 2005 г.). Сбор и анализ диагностических данных z/OS (PDF) . Корпорация IBM. стр. 77–93. ISBN 0738493996. Архивировано (PDF) из оригинала 21 декабря 2018 г. Проверено 29 января 2021 г.
  8. ^ Корпорация IBM (октябрь 2008 г.). Операции z/VM и Linux для системных программистов z/OS (PDF) . п. 24 . Проверено 25 января 2022 г.
  9. ^ Венкатешваран, Шрикришнан (2008). Основные драйверы устройств Linux. Серия статей о разработке программного обеспечения с открытым исходным кодом Prentice Hall. Прентис Холл. п. 623. ИСБН 978-0-13-239655-4. Архивировано из оригинала 26 июня 2014 г. Проверено 15 июля 2010 г. До появления kdump популярным механизмом получения и анализа дампов был Linux Kernel Crash Dump (LKCD).
  10. ^ Проект документации Fedora (2010). Руководство по безопасности Fedora 13. Корпорация Фултус. п. 63. ИСБН 978-1-59682-214-6. Архивировано из оригинала 26 июня 2014 г. Проверено 29 сентября 2010 г. Службы удаленного дампа памяти, такие как netdump, передают содержимое памяти по сети в незашифрованном виде.
  11. ^ «Установка шаблона имени для наборов данных дампа» (PDF) . Системные команды z/OS 2.5 MVS (PDF) . 25 марта 2022 г. стр. 474–475. SA38-0666-50 . Проверено 6 апреля 2022 г.
  12. ^ Информация о системе OS/VS2 MVS Интерактивная система контроля проблем (IPCS) — SUID 5752-857 (PDF) (Первое издание). ИБМ . Март 1978 г. GC34-2004-0 . Проверено 29 июня 2023 г.
  13. ^ Руководство пользователя и справочная информация по интерактивной системе контроля проблем OS/VS2 MVS — SUID 5752-857 (PDF) (второе изд.). ИБМ . Октябрь 1979 г. GC34-2006-1 . Проверено 29 июня 2023 г.
  14. ^ «Подкоманда SETDEF — установить значения по умолчанию» (PDF) . z/OS 2.5 — Команды интерактивной системы управления проблемами MVS (IPCS) (PDF) . ИБМ . 12 мая 2023 г. п. 239. СА23-1382-50 . Проверено 6 апреля 2022 г. ACTIVE, MAIN или STORAGE задают центральное хранилище для адресного пространства, в котором в данный момент работает IPCS, и позволяют вам получить доступ к этому активному хранилищу в качестве источника дампа. Вы можете получить доступ к личному хранилищу и любому общему хранилищу, доступному неавторизованной программе.
  15. ^ «core (5) - страница руководства Linux» . man7.org . 05.12.2015. Архивировано из оригинала 20 сентября 2013 г. Проверено 17 апреля 2016 г.
  16. ^ «Разновидности файлов дампа режима ядра» . Майкрософт. Архивировано из оригинала 22 февраля 2018 года . Проверено 22 февраля 2018 г.
  17. ^ «Автоматический дамп памяти». Майкрософт. 28 ноября 2017 г. Архивировано из оригинала 17 марта 2018 г. . Проверено 16 марта 2018 г.
  18. ^ «Начало работы с WinDbg (режим ядра)» . Архивировано из оригинала 14 марта 2016 года . Проверено 30 сентября 2014 г.
  19. ^ "Файлы минидампа" . Архивировано из оригинала 27 октября 2014 года . Проверено 30 сентября 2014 г.
  20. ^ "Перечисление MINIDUMP_TYPE" . Архивировано из оригинала 11 января 2015 года . Проверено 30 сентября 2014 г.

Примечания

  1. ^ Термин « ядро» устарел для современного оборудования, но используется во многих системах по историческим причинам.
  2. ^ Например, z/OS
  3. ^ ab Некоторые старые машины были десятичными .
  4. ^ В том смысле, что записи были двоичными, а не отформатированными для печати.
  5. ^ Файлы вывода системы (SYSOUT) — это временные файлы, принадлежащие программному обеспечению SPOOL .
  6. ^ Первоначально пакетная утилита IMDPRDMP; в настоящее время это команда TSO и репертуар панели ISPF для интерактивной системы управления проблемами (IPCS).
  7. ^ IBM предоставила инструменты для извлечения и форматирования данных из неформатированного дампа; эти инструменты [f] часто облегчали работу с неформатированным дампом, чем с форматированным.
  8. ^ С тех пор IBM добавила возможность иметь до ста наборов данных дампов с именами SYS1.DUMPnn(nn от 00 до 99). z/OS поддерживает несколько наборов данных дампа системы с произвольными шаблонами dsname при установке и под контролем оператора [11] .
  9. ^ Имея права на чтение класса объектов BLSACTV.ADDRSPAC, IPCS может просматривать любое адресное пространство.

Внешние ссылки

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

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