聘我网

新概念招聘3.0

如何查看某个程序加载了哪些库?

vote up0vote downstar

能方便地查看一个程序加载了哪些动态链接库吗?

 

1 个答复

vote up0vote downcheck

已经启动的程序可以这样:

cat /proc/NNNN/maps | awk '{print $6}' | grep '\.so' | sort | uniq

或者

lsof -p NNNN | awk '{print $9}' | grep '\.so'

还没有启动的程序可以用strace:

strace ./myapp 2>&1|grep '^open(".*\.so'

如果还不过瘾可以使用LD_DEBUG=files查看动态库的加载顺序:

LD_DEBUG=files ./myapp

更新

lsof这个命名很强悍,可以查看哪些进程占用了端口:

[root@ ~]# lsof -i TCP:80
COMMAND   PID USER   FD   TYPE DEVICE SIZE NODE NAME
nginx    3003 root    9u  IPv4   8693       TCP *:http (LISTEN)
nginx   19771  www    9u  IPv4   8693       TCP *:http (LISTEN)

还可以看到相应socketfd,9u,这里u代表r+w:

u for read and write access;

详情可以查看man lsof

链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.