stringtranslate.com

Основной дамп

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

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

Фон

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

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

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

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

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

Использует

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

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

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

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

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

Анализ

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

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

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

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

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

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

Пользователи мэйнфреймов IBM под управлением z/OS могут просматривать дампы SVC и транзакций с помощью интерактивной системы управления проблемами (IPCS), полноэкранного средства чтения дампов, которое изначально было представлено в OS/VS2 (MVS) , поддерживает написанные пользователем скрипты в REXX и позволяет просматривать дампы по принципу «наведи и снимай» [c] .

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

Формат

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

Монитор IBSYS для IBM 7090 включал программу дампа памяти ядра системы [11] , которая поддерживала дампы post-motem и snap.

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

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

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

Нейминг

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

Unix-подобный

Другие

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

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

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

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

Для анализа дампов режима ядра Windows используются Debugging Tools for Windows . [19]

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

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

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

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

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

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

Ссылки

  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. ^ "storage dump definition". Архивировано из оригинала 2013-05-11 . Получено 2013-04-03 .
  7. ^ Роджерс, Пол; Кэри, Дэвид (август 2005 г.). z/OS Diagnostic Data Collection and Analysis (PDF) . IBM Corporation. стр. 77–93. ISBN 0738493996. Архивировано (PDF) из оригинала 21 декабря 2018 г. . Получено 29 января 2021 г. .
  8. ^ IBM Corporation (октябрь 2008 г.). z/VM и Linux Operations for z/OS System Programmers (PDF) . стр. 24. Получено 25 января 2022 г.
  9. ^ Venkateswaran, Sreekrishnan (2008). Essential Linux device drivers. Серия Prentice Hall open source software development. Prentice Hall. стр. 623. ISBN 978-0-13-239655-4. Архивировано из оригинала 2014-06-26 . Получено 2010-07-15 . До появления kdump, Linux Kernel Crash Dump (LKCD) был популярным механизмом для получения и анализа дампов.
  10. ^ Проект документации Fedora (2010). Руководство по безопасности Fedora 13. Fultus Corporation. стр. 63. ISBN 978-1-59682-214-6. Архивировано из оригинала 2014-06-26 . Получено 2010-09-29 . Службы удаленного дампа памяти, такие как netdump, передают содержимое памяти по сети в незашифрованном виде.
  11. ^ "System Core-Storage Dump Program" (PDF) . IBM 7090/7094 IBSYS Operating System - Version 13 - System Monitor (IBSYS) (PDF) . Systems Reference Library (Eighth ed.). IBM . 30 декабря 1966 г. стр. 18–20. C28-6248-7 . Получено 10 мая 2024 г. .
  12. ^ «Настройка шаблона имени для наборов данных дампа» (PDF) . z/OS 2.5 MVS System Commands (PDF) . 25 марта 2022 г. стр. 474–475. SA38-0666-50 . Получено 6 апреля 2022 г. .
  13. ^ OS/VS2 MVS Interactive Problem Control System (IPCS) System Information - SUID 5752-857 (PDF) (Первое издание). IBM . Март 1978. GC34-2004-0 . Получено 29 июня 2023 г.
  14. ^ OS/VS2 MVS Interactive Problem Control System User's Guide and Reference - SUID 5752-857 (PDF) (Второе издание). IBM . Октябрь 1979 г. GC34-2006-1 . Получено 29 июня 2023 г.
  15. ^ "SETDEF subcommand - set defaults" (PDF) . z/OS 2.5 - MVS Interactive Problem Control System (IPCS) Commands (PDF) . IBM . 2023-05-12. стр. 239. SA23-1382-50 . Получено 6 апреля 2022 г. . ACTIVE, MAIN или STORAGE указывает центральное хранилище для адресного пространства, в котором в данный момент работает IPCS, и позволяет получить доступ к этому активному хранилищу как к источнику дампа. Вы можете получить доступ к частному хранилищу и любому общему хранилищу, доступному неавторизованной программе.
  16. ^ "core(5) – Linux manual page". man7.org . 2015-12-05. Архивировано из оригинала 2013-09-20 . Получено 17-04-2016 .
  17. ^ "Varieties of Kernel-Mode Dump Files". Microsoft. Архивировано из оригинала 22 февраля 2018 года . Получено 22 февраля 2018 года .
  18. ^ "Автоматический дамп памяти". Microsoft. 28 ноября 2017 г. Архивировано из оригинала 17 марта 2018 г. Получено 16 марта 2018 г.
  19. ^ "Getting Started with WinDbg (Kernel-Mode)". Архивировано из оригинала 14 марта 2016 года . Получено 30 сентября 2014 года .
  20. ^ "Minidump Files". Архивировано из оригинала 27 октября 2014 года . Получено 30 сентября 2014 года .
  21. ^ "MINIDUMP_TYPE enumeration". Архивировано из оригинала 11 января 2015 года . Получено 30 сентября 2014 года .

Примечания

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

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

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

Дампы ядра: