Что такое файл дампа ядра в Linux? Какую информацию она предоставляет? - PullRequest
12 голосов
/ 16 марта 2011

Что такое файл дампа ядра в linux? Какую информацию он предоставляет?

Ответы [ 2 ]

12 голосов
/ 16 марта 2011

Это в основном используемое адресное пространство процесса (из структуры mm_struct, которая содержит все области виртуальной памяти) и любая другая вспомогательная информация * a во время сбоя.

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

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


* a : в версии ядра 2.6.38, fs/exec.c/do_coredump() отвечает за дампы ядра, и вы можете видеть, что ему передан номер сигнала, код выхода и регистры.Он, в свою очередь, передает номер сигнала и регистрируется в дампер, специфичный для двоичного формата (ELF, a.out и т. Д.).

Дампер ELF - fs/binfmt_elf.c/elf_core_dump(), и вы можете увидетьчто он выводит не основанную на памяти информацию, такую ​​как сведения о потоке, в fs/binfmt_elf.c/fill_note_info(), а затем возвращается для вывода пространства процесса.

1 голос
/ 09 апреля 2013

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

В многопользовательской и многозадачной среде доступ к ресурсам, которые вам не принадлежат, является неприемлемым.Если процесс-A пытается получить доступ к системным ресурсам, принадлежащим процессу-B, это является нарушением.В этот момент операционная система убивает процесс и сохраняет статус процесса в файл.И этот файл называется файлом дампа ядра.Есть много причин для дампа ядра.Я только что объяснил одну из возможностей дампа ядра.Обычно это происходит из-за SIGSEGV (ошибка сегментации) и SIGBUS (ошибка шины).

Файл дампа основной памяти содержит сведения о том, где произошло аварийное завершение, стек процесса, таблица символов и т. Д.

Есть много инструментов для отладки coredumps.gdb dbx objdump mdb

Имеются опции компилятора, облегчающие процесс отладки.в то время как компиляция с указанием этих флагов (обычно -g) приведет к тому, что в таблице символов объектных файлов останется дополнительная информация, что поможет отладчикам (gdb / dbx) легко получить доступ к символам (символьные ссылки).

...