当前位置: 首页 > 面试题库 >

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

山煜祺
2023-03-14
问题内容

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

我想在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解决方案。



 类似资料:
  • 问题内容: 运行C程序时,它显示 “((核心转储)”), 但是在当前路径下看不到任何文件。 我已经设置并验证了: 我也试图找到一个名为“ core”的文件,但是没有得到core dumped文件? 任何帮助,我的核心文件在哪里? 问题答案: 阅读/usr/src/linux/Documentation/sysctl/kernel.txt。 [/ proc / sys / kernel /] cor

  • 问题内容: 假设您有一个文件 并希望添加一些标头信息,例如 如何添加此“标题”?手动执行似乎很简单。点击几回车,复制/粘贴或写信息,就可以了。当然,在R中,我可以读入,创建,添加标题信息,然后。 我想知道是否还有另一种从“顶部”附加文件的方法。也欢迎使用其他解决方案(来自c ++或Java …)(我很好奇其他语言如何解决此问题)。 问题答案: 在R中,不需要使用额外的文件。您可以这样做: 但是,使

  • 问题内容: 好的,我对linux和命令行非常陌生,对java也很陌生。我获得了一个构建Java程序的实习机会。我终于在我的机器(Windows)上完成了它,现在我必须将其迁移到Linux机器上进行测试,然后将其作为可执行文件运行。我已经在Linux上进行了很多阅读和研究,并了解了类路径,但是要完全理解它仍然很困难。只是还没有点击我。谁能使用示例以简化的方式解释类路径的目的?对我来说,最令人困惑的方

  • 根据这个QA,我们可以使用参数,用于添加要标记为白名单的目录,因为在git上找到了最新的CVE。但似乎没有办法递归地添加某些dir。 我有太多的存储库要添加,所以如果该功能存在,我想改用递归添加。存储库主要放在我在ubuntu上安装的NTFS磁盘上,所以里面的文件的所有者总是root用户。如果登录的用户与git目录的所有者不匹配,则最新更新会显示错误,例如

  • 问题内容: 由于执行make and make install命令在我的ubuntu 12.04上安装了mongoose Web服务器,我有一个名为mongoose.1的mongoose Web服务器的手册页。但是,手册页条目不在手册页数据库中。 当我这样做时,在命令行上输出:“ man mongoose” 我知道所有手册页的存储路径为: 感谢您的提前答复。 问题答案: 应该在环境变量中或环境变量

  • 问题内容: 我正在使用Java应用程序,该应用程序需要Windows中java.library.path中的文件。为了在Linux中运行相同的应用程序,我具有应在linux机器中添加的相应文件,到目前为止,我没有找到任何简单的解决方案 我确实将放入了一个已经在类路径中的文件夹中,但是我的应用程序仍然抱怨其中没有所需的文件 我想找到: 添加方式 如何知道它是否已经添加(添加时) 问题答案: 在启动应