Я хочу найти смещение функции.
readelf -Ws foo.so | egrep ' function\W'
Например:
readelf -Ws /lib/x86_64-linux-gnu/libc.so.6 | egrep ' open\W'
1782: 00000000000eb430 294 FUNC WEAK DEFAULT 14 open@@GLIBC_2.2.5
Значение open
равно 0xeb430
Моя трассировка стека имеет формат mangledFuncName + 0x123. Я хочу найти строку кода для соответствующего кадра
Самое простое решение - вычислить фактический адрес (добавьте 0x123
к адресу mangledFuncName
, извлеченному выше) и используйте addr2line -fe foo.so $addr
Например, отображение open+0x123
в исходный файл / строку дает:
addr2line -fe /lib/x86_64-linux-gnu/libc.so.6 0xeb483
__libc_open64
/build/glibc-oCLvUT/glibc-2.29/io/../sysdeps/unix/sysv/linux/open64.c:48 (discriminator 1)