无法在gdb中加载共享库

问题描述:

我试图在gdb中运行应用程序,但似乎我在debbuger中遇到了问题。我无法以我尝试过的所有方式加载共享库。无法在gdb中加载共享库

库储存在/usr/local/lib64和环境是确定的:

echo $LD_LIBRARY_PATH 
/usr/local/lib64:/home/user/lib 

当我在gdb运行appllication,会发生以下情况:

(gdb) set solib-search-path /usr/local/lib64 
(gdb) show solib-search-path The search path for loading non-absolute 
shared library symbol files is /usr/local/lib64. 
(gdb) info sharedlibrary No shared libraries loaded at this time. 

,我不能设置任何断点调试我的应用程序,但同时应用程序在gdb中运行正常,调试符号从二进制文件读取!

我想,问题与权限有关,但不知道它到底在哪里。

为了避免任何误解,我应该注意到我的应用程序运行良好,并且我没有任何访问共享库的麻烦。

当我在GBD运行appllication,会发生以下情况:

你有没有真正运行应用还,所以“装在这个时候没有共享库”是正确的,预期

您需要实际执行GDB run命令。

更新:

我可以执行运行命令,这是一个奇怪的事情。

不,这不是一件奇怪的事情。你没有问题,一切都按预期工作。

我在猜测你的真正的问题是你不能在你的应用程序正在使用的共享库中设置断点。一种解决方案问题是要做到这一点:

gdb /path/to/app 
(gdb) start 

# Application stops at main. 
# You can now set any breakpoint you want. 
(gdb) break foo.c:123 
+0

我可以执行运行命令,这是一个奇怪的事情。 – mortalland 2015-02-06 05:28:39

+0

@mortalland你在解释你真正的问题是什么时做得不好。回答更新与我目前猜测它可能是什么。 – 2015-02-06 07:24:35

+0

是的,正如@EmployedRussian所说的,执行运行命令并不是什么奇怪的事情。当您执行并运行您的应用程序时,您的共享库(.so文件)将被加载。 – 2015-02-06 07:32:47