Создать дамп ядра эльфа вручную

Я ищу для создания файла ELF Core Dump вручную.

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

Исходя из этих данных, я хотел бы создать файл дампа ядра ELF, аналогичный файлам, генерируемым ядром Linux при сбое программы, и целью было бы проанализировать этот дамп ядра с помощью GDB, специально созданной для моей платформы.

Я искал спецификации дампов ядра или подробный формат, но не нашел то, что хотел:

  • Какие разделы нужны для файла основного дампа?
  • Как они организованы в контейнер ELF?
  • Как перейти от бинарного дампа памяти (+ регистрирует значения) к файлу дампа ядра.

Желательно, чтобы это было сделано в C, я подумал, что мог бы использовать библиотеку libelf, чтобы помочь мне собрать файл, но я не нашел соответствующей информации о том, что поместить в этот файл и в каком формате, поэтому какие-либо подсказки, ссылки или советы приветствуется

Примечание. Речь идет не о повышении исключений, а о том, что ядро ​​выполняет работу за меня, я могу это сделать, но мне действительно нужно собрать себе ОЗУ и вручную зарегистрировать данные в дампе ядра elf.

Спасибо!

1 ответ

Решение

Я ищу для создания файла ELF Core Dump вручную.

Просто используйте Google Elf Userspace Coredumper, он делает именно это.

Я хочу собрать дамп ядра, а не внедрять его непосредственно в мое программное обеспечение

Не существует программы (о которой я знаю), которая могла бы это сделать. Скорее всего, вам придется написать один с нуля или адаптировать другую программу.

Есть две программы, которые могут записать дамп ядра из пользовательского пространства - вышеуказанный coredumper пользовательского пространства и GDB (через gcore команда). Я ожидаю, что адаптация ядра coredumper будет гораздо проще, чем адаптация GDB.

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

Другие вопросы по тегам