我原以为这个问题已经被问到,但我找不到它。如果是的话,请和我一起。在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
。