Получение адресов модулей с помощью libunwind

Я извлекаю указатель инструкций из стекового фрейма, используя libunwind следующим образом:

unw_get_reg ( &cursor, UNW_REG_IP, &ip );

Однако это дает мне только динамические адреса указателей функций. Я хотел бы получить статические адреса в модулях, чтобы я мог запросить их через addr2line.

Другой поток не получил ответ тогда. Знаете ли вы, как добиться этой информации?

С уважением

0 ответов

Предполагая, что под статическим адресом вы подразумеваете смещение от начала модуля, в котором находится функция, вы можете использоватьdladdr(ip, info) где info.dli_fbaseдает вам базовый адрес загруженного модуля. потом(pc - info.dli_fbase) дает вам смещение этой функции от начала модуля.

Другие вопросы по тегам