Как узнать имя функции в lib c .so - PullRequest
1 голос
/ 17 февраля 2020

В моем приложении мы получаем некоторую блокировку во время выполнения. Итак, мы взяли обратную трассировку за это время.
Смотрит функцию, присутствующую в lib c .so. Но здесь он показывает только адрес. Как мы можем узнать точную функцию?

Обратные строки:

/run/media/mmcblk3p1/xlplus(WDMainSigHandler+0x25) [0x522ee2]
/lib/libc.so.6(+0x28980) [0x7692f980]
/lib/libc.so.6(+0x1ac46) [0x76921c46]

1 Ответ

0 голосов
/ 22 февраля 2020

Как узнать точную функцию?

Существует несколько распространенных способов:

addr2line -fe /lib/libc.so.6 0x28980 0x1ac46

или

gdb -q /lib/libc.so.6
(gdb) x/i 0x28980  # will show which function you are in, and the actual instruction
                   # You may need to examine a few instructions before to make sense of it:
(gdb) x/20i 0x28980-35

(gdb) info symbol 0x1ac46  # ~equivalent to addr2line
...