Linux 列出运行时加载的所有符号

Linux 列出运行时加载的所有符号,linux,unix,solaris,Linux,Unix,Solaris,Windows有一个漂亮的工具——它列出了可执行文件中使用的所有符号以及从中加载符号的动态库。这对于了解缺少的符号和DLL非常有用 *nix/Solaris是否有类似的实用程序。虽然我们可以通过ldd和nm的组合找到这个问题,但是一个工具会很方便。使用dbx连接到pid,并使用命令列出加载的符号 $ dbx "-c funcs; quit " /usr/bin/bash 4837 Reading bash Reading ld.so.1 Reading libcurses.so.1 Read

Windows有一个漂亮的工具——它列出了可执行文件中使用的所有符号以及从中加载符号的动态库。这对于了解缺少的符号和DLL非常有用


*nix/Solaris是否有类似的实用程序。虽然我们可以通过ldd和nm的组合找到这个问题,但是一个工具会很方便。

使用dbx连接到pid,并使用命令列出加载的符号

$ dbx "-c funcs; quit "  /usr/bin/bash 4837

Reading bash
Reading ld.so.1
Reading libcurses.so.1
Reading libsocket.so.1
Reading libnsl.so.1
Reading libdl.so.1
Reading libc.so.1
Attached to process 4837
stopped in _waitid at 0xfee0af95
0xfee0af95: _waitid+0x0015:     jae      _waitid+0x21   [ 0xfee0afa1, .+0xc ]
`bash`_start
`bash`_mcount
`bash`__fsr
`bash`main
`bash`exit_shell
`bash`sh_exit
...
`libnsl.so.1`nis_sperror
`libnsl.so.1`nis_lerror
`libnsl.so.1`__nis_group_cache_stats
...
`libc.so.1`mmap64
`libc.so.1`_mmap64
`libc.so.1`_init
`libc.so.1`_fini
detaching from process 4837

为什么不制作一个脚本,使用
nm
/
ldd
输出所需信息,然后发布?记住,今天几乎所有伟大的开源软件都是因为开发人员“渴望抓挠”。)@约阿希姆:完全同意;无论使用简单的UN*X管道和小型shell别名或脚本发生了什么,感谢您的回复。这也可以通过gdb(对于那些不使用dbx的人)-“信息类型”命令来完成。我其实是在寻找一个工具,可以告诉哪些so和符号失踪。我想gdb/dbx只有在程序能够成功加载的情况下才能工作。