我正在使用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二进制文件表示未找到的库是预期的,因为这是一个开发主机
答案 0 :(得分:0)
二进制文件在生产主机上运行,其中库位于我在开发主机上运行二进制文件的路径中,方法是设置solib-search-path
这里有你的问题。
solib-search-path
是 GDB 寻找图书馆的路径。
DT_RPATH
或LD_LIBRARY_PATH
环境变量来搜索共享库。
通常,只有在分析来自其他主机的核心转储时才应设置solib-search-path
(GDB需要访问核心转储时使用的确切库)生成)。在运行本地二进制文件时设置solib-search-path
绝对不是必需的 - GDB可以通过询问运行时加载程序它们所在的位置来自动推断库的位置。
ldd二进制文件表示未找到的库是预期的,因为这是一个开发主机
如果ldd
说明了,那么当然你将无法运行二进制文件(在GDB外部)。