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