我有一个无法直接访问的在远程系统上生成的核心文件。我还拥有远程系统中库文件的本地副本,以及崩溃程序的可执行文件。
我想在gdb中分析此核心转储。
例如:
gdb path/to/executable path/to/corefile
我的库在当前目录中。
在过去,我看到调试器通过提供选项“ -p”来实现此目的。或“ -p / =”。所以我的问题是:
分析gdb中的corefile时,如何指定首先从相对于当前目录的路径加载库?
在不指定可执行文件或核心文件的情况下启动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解决方案。
solib-absolute-prefix