我在远程系统上生成了一个我无法直接访问的核心文件.我还有来自远程系统的库文件的本地副本,以及崩溃程序的可执行文件.
我想在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
如果您尝试覆盖某些库,但不是全部,那么您可以将目标库目录结构复制到临时位置并使用上述solib-absolute-prefix
解决方案.