Как я могу получить символы в дампе ядра, если у меня есть только общая библиотека? - PullRequest
0 голосов
/ 27 августа 2018

Мы поставляем совместно используемую библиотеку, которая используется клиентами для интеграции в их продукт.

Мы получили дамп ядра от клиента, посмотрев на info proc mappings Я вижу загруженные модули и в thread apply all bt Я вижу, что есть записи в трассировке стека, которые находятся внутри диапазона, в который загружена наша библиотека. Так что вполне возможно, что наша библиотека вызвала сбой. Но у нас нет доступа к исполняемому файлу, который использовал клиент.

Есть ли способ получить символы в этом дампе ядра, если у нас есть только общая библиотека, которую мы поставили, но не основной исполняемый файл?

Я попытался загрузить ядро ​​и библиотеку, используя команду file, и наоборот, но в трассировке стека нет символов.

Большинство примеров в Интернете подразумевают, что у вас есть доступ к самому исполняемому файлу, чтобы иметь возможность получать значимые символы. Могу ли я получить символы только для общей библиотеки, если я загружу ее в GDB?

Другие подробности: в производственной системе используется другой (намного более старый) GCC, чем тот, который установлен на моем ПК. И у нас есть свободная версия библиотеки, мы отправляем раздетую библиотеку.

...