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

标签 linux path gdb coredump

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

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

例如:

gdb path/to/executable path/to/corefile

我的库在当前目录中。

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

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

最佳答案

在不指定可执行文件或核心文件的情况下启动 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 解决方案。

关于linux - 在 Linux 上的 gdb 中加载核心文件时,如何在库路径前添加一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/84341/

相关文章:

c - 在 GDB 中,您可以将内存设置为 char 数组吗?

linux - 过剩已经安装,仍然没有编译

html - 一个 SVG 的多个路径的多个复选框

mysql - resolveip 某些域但错误?

android - 获取android可绘制图像的绝对路径

javascript - D3 库中动画曲线的最少资源方式

xcode - Xcode LLDB观察点

c - 如何使用 GDB 重定向到不同的位置?

c - 以编程方式检查进程是否正在后台运行

linux - 比较二进制文件并仅打印匹配行的偏移量