GDB无法加载所以文件和错误没有这样的文件或目录

时间:2017-09-26 23:19:35

标签: c++ linux debugging gdb alpine

我正在使用alpine linux在docker容器中将核心文件加载到GDB中。 最初我的gdb抱怨找不到二进制文件,然后我按照这个讨论gdb During startup program exited with code 127安装了libc6-compat,即使我有一个64位的linux,我的二进制解释器是64位[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2] < / p>

这实际上有效,但现在我得到.so文件的相同错误。我可以看到.so文件位于solib-search-path上设置的路径中,但是gdb没有加载任何库并抱怨没有这样的文件或目录。

二进制文件在生产主机上运行,​​其中库位于路径中 我通过设置solib-search-path

在开发主机上运行二进制文件

ldd二进制文件表示未找到的库是预期的,因为这是一个开发主机

1 个答案:

答案 0 :(得分:0)

  

二进制文件在生产主机上运行,​​其中库位于我在开发主机上运行二进制文件的路径中,方法是设置solib-search-path

这里有你的问题。

solib-search-path GDB 寻找图书馆的路径。

该设置是否影响二进制本身,该二进制本身使用标准系统库路径,已编译的DT_RPATHLD_LIBRARY_PATH环境变量来搜索共享库。

通常,只有在分析来自其他主机的核心转储时才应设置solib-search-path(GDB需要访问核心转储时使用的确切库)生成)。在运行本地二进制文件时设置solib-search-path绝对不是必需的 - GDB可以通过询问运行时加载程序它们所在的位置来自动推断库的位置。

  

ldd二进制文件表示未找到的库是预期的,因为这是一个开发主机

如果ldd说明了,那么当然你将无法运行二进制文件(在GDB外部)。