2014-07-18 171 views
1

我原以爲這個問題已經被問到,但我找不到它。如果是的話,請和我一起。在gdb中加載本地共享庫

我試圖在debian安裝中修改現有的程序。

該程序在調用時調用它,創建一些它自己的共享庫。我想調試程序並進入其中一個本地共享庫,將其稱爲libbar.so。

但是,由於這是一個現有的程序,已經有一個/usr/lib/libbar.so,我不想覆蓋它。

那麼如何讓gdb使用本地libbar.so?

回答

0

程序在編譯時調用它,創建一些它自己的共享庫。

您的意思是程序在運行時將其自己的副本libbar.so寫出到磁盤上?

這是非常不尋常的。你可能的意思是,當大廈該方案,當地libbar.so也建成。

我想調試程序並進入本地共享庫之一,將其稱爲libbar.so。

這應該已經發生,如果實際上程序加載本地libbar.so

什麼是可能發生的事情是,當你運行該程序,負荷/usr/lib/libbar.so,然後GDB使用什麼程序已經加載(你可以看到GDB認爲通過使用info shared GDB命令加載)。

如果你希望你的程序加載的libbar.so本地副本,則需要調整LD_LIBRARY_PATH,或修改烤到程序中DT_RPATHDT_RUNPATH,使用-Wl,-rpath=/path/to/lib(其中本地libbar.so位於/path/to/lib/libbar.so)。一旦你這樣做,GDB會自動拿起當地的libbar.so