трейсер, обернул malloc, в лог вываливается типа такого, где второе число - const void *caller
#f:0x0;0x804d409-0x2000e698
#m:0x2000e6d0;0x804c89d-32
теперь нужно по этим адресам человеческие имена функций вытащить - как лучше сделать?
WinDbg + команда u?
не под винду
В elf-е есть символьная таблица которая содержит все названия функций которые были определены тобой Если это функция была вызвана из прекомпилированого бинарника то нужно искать GOT/PLT Если у тебя elf файл то всё легко
есть, но там замангленные имена
Замангленные?
_ZN3fooEic всякие
https://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/a01696.html
ну и кстати функций там чет не вижу
Способов довольно много, зависит желаемой точности / окружения Можно через dladdr, не очень точно Можно через libdw, она честно dwarf парсит и умеет заинлайненные функции детектить
Обсуждают сегодня