Я хотел бы прочитать файл дампа основной памяти, сброшенный с помощью gcore.
Однако я хотел бы прочитать файл coredump в моем приложении c ++, а не с помощью команды терминала gdb.
Например, у меня есть исполняемая программа «testEx», и она по какой-то причине убивается, после чего «testEx» оставляет дамп ядра.
Я создаю приложение C ++ «readGDB» для анализа дампа ядра, созданного «testEx».
Любая библиотека C ++ и пример для чтения файла ядра?
Любая библиотека C ++ и пример для чтения файла ядра?
Чтение core
тривиально: вы просто open
а также read
Это.
Что не тривиально, так это понимание того, что означает содержание. core
файл является ELF
файл, поэтому он имеет много внутренней структуры, и такие библиотеки, как libelf
может помочь вам прочитать конкретные разделы core
,
Но это все еще долго далеко от того, что делает GDB: действительно чтобы понять содержание, вам также необходимо реализовать управление символами, разматывание стека и многое другое. Короче говоря, вам придется заново внедрить половину GDB.
Так почему бы просто не использовать GDB? Вы можете поговорить с GDB из своего приложения, и оно даст вам ответы, которые вы ищете. ГБД имеет специальный режим интерфейса машины только для этой цели.