我们的系统有一个开源库。棘手的是我们有两个库,一个是我们自己的修改,另一个是原始的。这两个副本都在源代码树中,但是应该在运行时调用自定义的副本,而将原始的副本用于构建时用于其他目的。如何跟踪哪个库被动态加载
现在我怀疑,在我们的系统升级过程中,定制的一个隐藏了原来的隐藏。由于系统的复杂性,修改源代码以进行一些跟踪是可行的,但是很尴尬。我认为如果我只是objdump顶级图书馆得到线索。
以下是详细信息:
1) The customization one and the original one have the same source file names
2) Their library names are same
3) The customization is some implementation change at deep within; so it is
invisible from outside
4) The 2 libraries are at different sub directory trees
因为它是动态链接的,我居然怀疑objdump的可以告诉我任何区别。但任何建议表示赞赏!
gdb解决方案与我正在寻找的最接近。问题:在我进入函数之后,我怎么知道我在哪个库? “show sharedlib”对我不起作用,因为许多库被归档(或者其他一些原因,无论如何,我看不到库) – 2014-10-20 18:27:17
我对gdb的了解不多。顺便说一句,你也可以使用lsof,例如。 lsof -Pn | grep yourappname | grep“\ .so” – Peter 2014-10-24 08:31:22