有没有办法检查正在运行的进程使用哪些库?
更具体地说,如果程序使用以下方式加载一些共享库dlopen,那么 readelf 或 ldd 将不会显示它。
是否有可能从正在运行的进程中获取该信息?如果是,怎么办?
其他人都走在正确的道路上。这里有几种方法。
cat /proc/NNNN/maps | awk '{print $6}' | grep '\.so' | sort | uniq
或者,使用 strace:
strace CMD.... 2>&1 | grep -E '^open(at)?\(.*\.so'
这两个都假设共享库的路径中某处有“.so”,但您可以修改它。第一个给出了相当漂亮的输出,只是一个库列表,每行一个。第二个将在打开时继续列出库,所以这很好。
而且当然lsof
...
lsof -p NNNN | awk '{print $9}' | grep '\.so'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)