Как читать кадры из дампа ядра (без GDB)?

Я хотел бы получить доступ к кадрам, хранящимся в дампе ядра программы, которая не имеет символов отладки (я хочу сделать это в С). Когда я открываю программу и дамп ядра внутри 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

6
задан ks1322 11 March 2018 в 16:04
поделиться