Я хотел бы получить доступ к кадрам, хранящимся в дампе ядра программы, которая не имеет символов отладки (я хочу сделать это в С). Когда я открываю программу и дамп ядра внутри GDB, я получаю трассировку стека, включая имена функций. Например:
(gdb) bt
#0 0x08048443 in layer3 ()
#1 0x08048489 in layer2 ()
#2 0x080484c9 in layer1 ()
#3 0x0804854e in main ()
Имена всех функций хранятся в исполняемом файле в разделе .strtab. Как я могу создать трассировку стека с разными кадрами? Запуск GDB в пакетном режиме невариант. А также просто «копировать нужные части из gdb» — тоже плохая идея, потому что код не написан самостоятельно.
Итак, чтобы уточнить мой вопрос: где я могу найти точку внутри дампа ядра, где я могу начать чтение информации о стеке? Есть ли какая-то библиотека для доступа к этой информации? Структура, которую я могу использовать? Или, что еще лучше, документацию о том, как эта информация структурирована в дампе ядра?
(я уже видел вопрос «как сгенерировать трассировку стека из файла дампа ядра на языке C без вызова внешнего инструмента, такого как gdb», но поскольку правильного ответа нет, я подумал Я бы переспросил)
[Изменить]Я делаю это под Linux x86