Ръчно генериране на дъмп на ядрото на elf

Търся ръчно генериране на ELF Core Dump файл.

Имам дъмп на RAM от моята програма и мога също да извлека информация за регистъра и т.н.

С тези данни бих искал да създам ELF файл за дъмп на ядрото, подобен на тези, генерирани от ядрото на Linux, когато програма се срине, целта би била да анализирам този дъмп на ядрото с GDB, специално направен за моята платформа.

Търсих спецификации на основни дъмпове или подробен формат, но не намерих това, което исках:

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

За предпочитане е това да се направи на C, мислех, че мога да използвам библиотеката libelf, за да ми помогне да създам файла, но не намерих подходяща информация за това какво да поставя в този файл и в какъв формат, така че всяка улика, връзка или съвет са добре дошли.

Забележка: Тук не става въпрос за повдигане на изключения и работа, свършена от ядрото вместо мен, мога да направя това, но наистина трябва да събера RAM и да регистрирам данни ръчно в дъмп на ядрото на elf.

Благодаря !


person d6bels    schedule 25.07.2013    source източник
comment
Друга информация по тази тема, особено за секцията Бележка, може да бъде намерена на stackoverflow .com/questions/17972945/core-dump-note-section   -  person d6bels    schedule 01.08.2013


Отговори (1)


Търся ръчно генериране на ELF Core Dump файл.

Просто използвайте Google elf userspace coredumper, той прави точно това .

Искам да изградя основния си дъмп, а не да го внедря директно в моя софтуер

Няма съществуваща програма (за която знам), която да може да направи това. Вероятно ще трябва да напишете такава от нулата или да адаптирате друга програма.

Има две програми, които могат да напишат дъмп на ядрото от потребителското пространство -- горният потребителски coredumper и GDB (чрез команда gcore). Очаквам, че адаптирането на Google coredumper ще бъде много по-лесно от адаптирането на GDB.

Ако решите да напишете такъв от нулата, все още можете да прочетете източника на Google coredumper, за да разберете какво трябва да напишете в основата.

person Employed Russian    schedule 26.07.2013
comment
Благодаря, това помага, но все пак бих искал да създам основния си дъмп, след като програмата се срине. Това е с цел аутопсия. Имам някои механизми, които изхвърлят RAM и се регистрират, когато програмата се срине. Едва след това, т.е. след смъртта, искам да създам основния си дъмп, а не да го внедря директно в моя софтуер. - person d6bels; 26.07.2013
comment
Благодаря, предполагам, че тогава ще напиша своя собствена! - person d6bels; 29.07.2013