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

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

Ответ 1

В основном это пространство адреса процесса, которое используется (из структуры 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(), затем возвращается для вывода пространства процесса.

Ответ 2

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

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

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

Существует множество инструментов для отладки исходных кодов. GDB DBX objdump MDB

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