我原以爲這個問題已經被問到,但我找不到它。如果是的話,請和我一起。在gdb中加載本地共享庫
我試圖在debian安裝中修改現有的程序。
該程序在調用時調用它,創建一些它自己的共享庫。我想調試程序並進入其中一個本地共享庫,將其稱爲libbar.so。
但是,由於這是一個現有的程序,已經有一個/usr/lib/libbar.so,我不想覆蓋它。
那麼如何讓gdb使用本地libbar.so?
我原以爲這個問題已經被問到,但我找不到它。如果是的話,請和我一起。在gdb中加載本地共享庫
我試圖在debian安裝中修改現有的程序。
該程序在調用時調用它,創建一些它自己的共享庫。我想調試程序並進入其中一個本地共享庫,將其稱爲libbar.so。
但是,由於這是一個現有的程序,已經有一個/usr/lib/libbar.so,我不想覆蓋它。
那麼如何讓gdb使用本地libbar.so?
程序在編譯時調用它,創建一些它自己的共享庫。
您的意思是程序在運行時將其自己的副本libbar.so
寫出到磁盤上?
這是非常不尋常的。你可能的意思是,當大廈該方案,當地libbar.so
也建成。
我想調試程序並進入本地共享庫之一,將其稱爲libbar.so。
這應該已經發生,如果實際上程序加載本地libbar.so
。
什麼是可能發生的事情是,當你運行該程序,它負荷/usr/lib/libbar.so
,然後GDB使用什麼程序已經加載(你可以看到GDB認爲通過使用info shared
GDB命令加載)。
如果你希望你的程序加載的libbar.so
本地副本,則需要調整LD_LIBRARY_PATH
,或修改烤到程序中DT_RPATH
或DT_RUNPATH
,使用-Wl,-rpath=/path/to/lib
(其中本地libbar.so
位於/path/to/lib/libbar.so
)。一旦你這樣做,GDB會自動拿起當地的libbar.so
。