我們的系統有一個開源庫。棘手的是我們有兩個庫,一個是我們自己的修改,另一個是原始的。這兩個副本都在源代碼樹中,但是應該在運行時調用自定義的副本,而將原始的副本用於構建時用於其他目的。如何跟蹤哪個庫被動態加載
現在我懷疑,在我們的系統升級過程中,定製的一個隱藏了原來的隱藏。由於系統的複雜性,修改源代碼以進行一些跟蹤是可行的,但是很尷尬。我認爲如果我只是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