У меня следующая проблема: когда я получаю обратную трассировку в C с помощью функции backtrace (3), символы возвращают имя функции, которое легко определить с помощью библиотеки dwarf и dladdr (3).
Проблема в том, что если у меня есть простой указатель на функцию (например, передав его & function ), функции dladdr + dwarf не помогут. Кажется, что указатель отличается от указателя, возвращаемого backtrace (3) (это не странно, поскольку backtrace получает эти указатели на функции прямо из стека).
У меня вопрос: есть ли какой-нибудь метод для разрешения этих имен? Кроме того, я хотел бы точно знать, в чем разница между двумя указателями.
Спасибо!
UPDATE:
Разница между указателями довольно значительная:
Тот, который я получаю с помощью backtrace: 0x8048ca4
Версия с прямым указателем: 0x3ba838
Мне кажется, что второму нужно смещение.