[root@xxx memcached-1.4.5]# objdump -R memcached-debug |grep freeaddrinfo
0000000000629e10 R_X86_64_JUMP_SLOT freeaddrinfo
...
(gdb) disas freeaddrinfo
Dump of assembler code for function freeaddrinfo:
0x00000037aa4baf10 <freeaddrinfo+0>: push %rbp
0x00000037aa4baf11 <freeaddrinfo+1>: push %rbx
0x00000037aa4baf12 <freeaddrinfo+2>: mov %rdi,%rbx
所以我知道
freeaddrinfo
是一个动态链接的函数,但是如何知道它定义在哪个.so
中呢? 最佳答案
看到这个answer。 info symbol freeadrinfo
是一种查找方法。
在Linux和Solaris上,您也可以使用ldd
和LD_DEBUG=symbols
。例如,如果您想找出localtime
中/bin/date
的来源:
LD_DEBUG=bindings ldd -r /bin/date 2>&1 | grep localtime
26322: binding file /bin/date [0] to /lib/libc.so.6 [0]: normal symbol `localtime' [GLIBC_2.2.5]
关于gdb - 如何知道在哪个库中定义了特定功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5563354/