如何知道哪个库定义了特定的功能?
[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
是一个动态链接的函数,但是如何知道它定义的是哪个?
没有找到相关结果
已邀请:
3 个回复
贸会
是一种了解方法。 在Linux和Solaris上,您还可以使用
和
。例如,如果你想知道
中的
来自哪里:
懊毁暗
检查/ proc / PID / maps以找出符号地址所在的模块。
0x84bcc4在[007ce000,0085f000]中
柑恫祟
增强版本将列出链接到可执行文件的所有库(通过ldd),并在列出的每个库之后搜索是否在那里定义了符号。根据您的* nix,您可能需要调整剪切解析: