Создать дамп ядра эльфа вручную
Я ищу для создания файла 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, чтобы выяснить, что именно вы должны записать в ядро.