Я внедряю инструмент анализа производительности.Одна вещь, которую я делаю, - это оценка стоимости вызова функции.Для этого мне нужно знать, является ли данная функция виртуальной в общей библиотеке.
Для этого у меня есть доступ к сборке общей библиотеки.У меня также есть график вызовов выполнения.Я не могу ничего сделать во время выполнения, анализ должен быть выполнен после выполнения, используя информацию, которую я могу получить из графа вызовов и общих библиотек.
Единственный способ, которым я задумался, - это извлечь vtable из библиотеки и посмотреть, есть ли моя функция в vtable, но я не нашел способа извлечь vtable класса из сборки,
Я пытался
readelf -s -W lib.so | c++filt | grep vtable
, но это только дало мне адрес хорошей таблицы (по крайней мере, я так думаю), и этот адрес никуда меня не привел.
Совместно используемая библиотека скомпилирована с gcc 4.3.5
Кто-нибудь знает способ получения этой vtable?Или, по крайней мере, кто-то знает способ узнать, является ли функция виртуальной в общей библиотеке?
Большое спасибо