我正在尝试在 Linux 上修改此共享库(带有 .so)扩展名。我插入一些printf语句和fprintf语句进行调试,但没有效果。我删除了 .so 文件并意识到该程序仍然可以正常运行。这是否意味着程序已加载到内存中? (但我确定只有我正在测试的程序使用那个 .so 文件)
我如何让它卸载以确保我的程序正在加载修改后的程序?
最佳答案
不,共享库不缓存在内存中。如果您删除了 .so
文件并且您的程序仍在运行,则:
- 程序正在从不同位置加载同名的
.so
,或者 - 程序无需加载
.so
即可运行
如果 .so
应该在程序启动时加载,那么您可以使用 ldd
找出您的操作系统认为 .so
实际上是。
如果 .so
在运行时动态加载,那么也许 strace
能够帮助查明正在发生的事情。
关于linux - 从内存中卸载共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11606235/