如何在特定时间打印内存中的所有共享对象?

时间:2014-09-11 10:35:10

标签: c linux dll shared-libraries

在Linux系统中,在特定时间运行许多进程,每个进程都依赖于某些动态库(共享对象)。这可以通过ldd命令找到。进程运行时,共享对象必须在内存中。同样,在Linux系统中的不同运行进程的内存中会加载许多共享对象。

有没有办法列出所有这些共享对象?它可以用C编程语言编写吗?列出当前在内存中加载的所有共享对象是否可行?

2 个答案:

答案 0 :(得分:0)

阐述skwllsp的评论:

    grep '\.so' /proc/*/maps | sort -k6 | uniq -f5

你可以用C命令system()popen()

答案 1 :(得分:0)

从进程内部以编程方式(这是Linux GNU glibc特定的),您可以使用dl_iterate_phdr(3);手册页中的示例正在执行您想要的操作。