小编典典

在Linux上的gdb中加载核心文件时,如何在目录前添加库路径

linux

我有一个无法直接访问的在远程系统上生成的核心文件。我还拥有远程系统中库文件的本地副本,以及崩溃程序的可执行文件。

我想在gdb中分析此核心转储。

例如:

gdb path/to/executable path/to/corefile

我的库在当前目录中。

在过去,我看到调试器通过提供选项“ -p”来实现此目的。或“ -p / =”。所以我的问题是:

分析gdb中的corefile时,如何指定首先从相对于当前目录的路径加载库?


阅读 736

收藏
2020-06-07

共1个答案

小编典典

在不指定可执行文件或核心文件的情况下启动gdb,然后键入以下命令:

set solib-absolute-prefix ./usr
file path/to/executable
core-file path/to/corefile

您将需要确保完全从目标系统镜像您的库路径。上面的内容是用于调试与主机不匹配的目标的,这就是为什么复制包含库的根文件系统结构很重要的原因。

如果要远程调试与主机结构和Linux /glibc版本相同的服务器,则可以按照fd的建议进行操作:

set solib-search-path <path>

如果要覆盖某些库,但不是全部库,则可以将目标库目录结构复制到一个临时位置,然后使用上述solib-absolute-prefix解决方案。

2020-06-07