Получение адресов модулей с помощью libunwind
Я извлекаю указатель инструкций из стекового фрейма, используя libunwind следующим образом:
unw_get_reg ( &cursor, UNW_REG_IP, &ip );
Однако это дает мне только динамические адреса указателей функций. Я хотел бы получить статические адреса в модулях, чтобы я мог запросить их через addr2line.
Другой поток не получил ответ тогда. Знаете ли вы, как добиться этой информации?
С уважением
0 ответов
Предполагая, что под статическим адресом вы подразумеваете смещение от начала модуля, в котором находится функция, вы можете использоватьdladdr(ip, info)
где info.dli_fbase
дает вам базовый адрес загруженного модуля. потом(pc - info.dli_fbase)
дает вам смещение этой функции от начала модуля.