Наша система имеет библиотеку с открытым исходным кодом. Трудность в том, что у нас есть 2 экземпляра библиотеки, одна из них с нашей собственной модификацией, а другая - оригинал. Обе копии находятся в исходном дереве, но настраиваемый должен быть вызван во время выполнения, а исходный - во время сборки для других целей.Как отслеживать динамическую загрузку библиотеки
Теперь я подозреваю, что во время нашего обновления системы настройка была скрыта от оригинальной. Из-за сложности системы, можно сделать это, но неловко изменить исходный код, чтобы добавить несколько следов. Я думаю, если бы я мог просто objdump библиотеку верхнего уровня, чтобы получить подсказку.
Вот более подробная информация:
1) The customization one and the original one have the same source file names
2) Their library names are same
3) The customization is some implementation change at deep within; so it is
invisible from outside
4) The 2 libraries are at different sub directory trees
Поскольку динамически связаны между собой, я на самом деле сомневаюсь, objdump может сказать мне никакой разницы. Но любое предложение приветствуется!
Решение gdb ближе всего к тому, что я ищу. Вопрос: после того, как я вхожу в функцию, как узнать, в какой библиотеке я? «show sharedlib» не работает для меня, потому что многие библиотеки заархивированы (или какая-то другая причина, так или иначе, я не могу видеть библиотеку) –
Я не так много знаю о gdb. И BTW вы также можете использовать lsof, например. lsof -Pn | grep yourappname | grep "\ .so" – Peter