在gdb中加载本地共享库
我本以为这个问题已经问过了,但我找不到。如果是的话,请容忍我 我正在debian安装中尝试对现有程序进行修改 这个名为foo的程序在编译时会创建一些自己的共享库。我想调试这个程序并进入一个本地共享库,称之为libbar.so 但是,由于这是一个现有的程序,所以已经有一个/usr/lib/libbar.so,我不想覆盖它 那么如何让gdb使用本地libbar.So呢 这个名为foo的程序在编译时会创建一些自己的共享库 您的意思是程序在运行时将自己的在gdb中加载本地共享库,gdb,shared-objects,Gdb,Shared Objects,我本以为这个问题已经问过了,但我找不到。如果是的话,请容忍我 我正在debian安装中尝试对现有程序进行修改 这个名为foo的程序在编译时会创建一些自己的共享库。我想调试这个程序并进入一个本地共享库,称之为libbar.so 但是,由于这是一个现有的程序,所以已经有一个/usr/lib/libbar.so,我不想覆盖它 那么如何让gdb使用本地libbar.So呢 这个名为foo的程序在编译时会创建一些自己的共享库 您的意思是程序在运行时将自己的libbar.so的副本写入磁盘吗 这是非常不寻常
libbar.so的副本写入磁盘吗
这是非常不寻常的。您可能的意思是,在构建程序时,也会构建一个本地的libbar.so
我想调试这个程序并进入一个本地共享库,称之为libbar.so
如果程序实际上加载了本地libbar.so
,那么这种情况应该已经发生了
可能发生的情况是,当您运行程序时,它加载/usr/lib/libbar.so
,然后GDB使用程序已经加载的内容(您可以通过使用info shared
GDB命令查看GDB认为加载的内容)
如果您想让您的程序加载libbar.so
的本地副本,您需要调整LD\u LIBRARY\u PATH
,或修改DT\u RPATH
或DT\u RUNPATH
烘焙到程序中,使用-Wl,-RPATH=/PATH/to/lib
(本地libbar.so
位于/PATH/to/libbar.so
)。一旦您这样做,GDB将自动拾取本地libbar.so