从内存中卸载共享库

hug*_*gie 2 linux shared-libraries

我正在尝试在Linux上修改此共享库(带.so)扩展名.我正在插入一些printf语句和fprintf语句进行调试,它没有任何效果.我删除了.so文件并意识到该程序仍然正常运行.这是否意味着程序被加载到内存中?(但我确定只有我正在测试的程序才使用.so文件)

如何让它卸载所以我可以确保我的程序加载修改后的程序?

Gre*_*ill 6

不,共享库不会缓存在内存中.如果您已删除该.so文件并且您的程序仍在运行,则:

  • 程序正在.so从不同的位置加载一个相同的名称,或
  • 程序可以在不加载的情况下运行 .so

如果.so应该在程序启动时加载,那么您可以ldd用来找出您的操作系统.so实际上认为的位置.

如果.so在运行时动态加载,那么也许strace可以帮助查明正在发生的事情.

  • 从操作系统的角度来看,它们都是一样的.Python将使用`dlopen()`来加载库.也许在`strace`下运行它并捕获所有输出,然后在跟踪中搜索`.so`的名称. (2认同)