Что такое файл дампа ядра в Linux? Какую информацию она предоставляет?
Что такое файл дампа ядра в linux? Какую всю информацию она предоставляет?
2 ответа
Это в основном используемое адресное пространство процесса (из 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()
, затем возвращается для вывода пространства процесса.
Если программа завершается ненормально, состояние программы в точке ненормального завершения должно быть записано для дальнейшего анализа. и этот статус записывается в файл дампа ядра.
В многопользовательской и многозадачной среде доступ к ресурсам, которые вам не принадлежат, является неприемлемым. Если процесс-A пытается получить доступ к системным ресурсам, принадлежащим процессу-B, это нарушение. В этот момент операционная система убивает процесс и сохраняет статус процесса в файл. И этот файл называется файлом дампа ядра. Есть много причин для дампа ядра. Я только что объяснил одну из возможностей для дампа ядра. Обычно это происходит из-за SIGSEGV (ошибка сегментации) и SIGBUS(ошибка шины).
Файл дампа основной памяти содержит сведения о том, где произошло аварийное завершение, стек процесса, таблица символов и т. Д.
Есть много инструментов, доступных для отладки coredumps. gdb dbx objdump mdb
Имеются опции компилятора, чтобы упростить процесс отладки. в то время как компиляция, дающая эти флаги (обычно -g), приведет к тому, что дополнительная информация останется в таблице символов объектных файлов, что поможет отладчикам (gdb/dbx) легко получить доступ к символам (символьные ссылки).