LXR, перекрестная ссылка Linux , обычно полезна, когда вы хотите узнать, как что-то делается в ядре Linux.Это инструмент для поиска и поиска исходных кодов ядра.
Поиск по «дампу ядра» возвращает много обращений, но два из наиболее перспективных выглядят в fs/exec.c
и fs/proc/kcore.c
(многообещающе, потому что имена файлов довольно общие, в частности, вы не хотите начинать с вещей, специфичных для архитектуры).kcore.c
на самом деле для дампа ядра ядра, но попадание в fs/exec.c
находится в функции do_coredump
, которая является основной функцией для дампа ядра процесса.Оттуда вы можете как прочитать функцию, чтобы увидеть, что она делает, так и выполнить поиск, чтобы узнать, как она вызывается.
Большая часть кода в do_coredump
посвящена определению, следует ли создавать дамп ядра и куда должен идти дамп.,То, что выводить, обрабатывается ближе к концу: binfmt->core_dump(&cprm)
, т.е. это зависит от формата исполняемого файла (ELF, a.out,…).Таким образом, ваш следующий поиск находится в поле структуры core_dump
, в частности, его «использование»;затем выберите совпадение, соответствующее исполняемому формату. ELF - это, вероятно, тот, который вам нужен, и поэтому вы попадаете в функцию elf_core_dump
.
Как говорится, я не уверен в вашем описанииваши цели в том, что вы действительно хотите изменить формат дампа ядра, в отличие от написания инструмента, который анализирует существующие дампы.
Вас может заинтересовать существующая работа по анализу аварийных дампов ядра ,Часть этой работы относится и к дампам процессов, например, расширение gcore для включения дампов процессов в дампы ядра * .