缺少单独的调试信息

Nay*_*iya 4 fedora gdb

我正在尝试在 Fedora 机器中使用 GDB 调试代码。每次我运行它时都会产生这条消息。

Missing separate debuginfos, use: debuginfo-install glibc-2.18-12.fc20.x86_64 libgcc-4.8.3-1.fc20.x86_64 libstdc++-4.8.3-1.fc20.x86_64
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 默认情况下,这些包应该在 GDB 中吗?
  2. 每个包的功能是什么?
  3. 在实际的生产环境中,应该为 GDB 安装这些包吗?
  4. 如果我不安装这些软件包可以吗?会有什么效果?

gar*_*Red 6

  1. No.gdb由一个维护者glibc打包,由另一个维护者打包gcclibstdc等等,所有都由不同的维护者打包。将这些调试信息打包在一起gdb需要相当多的协调。每当其中一个包发生变化时,gdb维护者就必须重新打包和发布。管理起来会很麻烦。gdb也可以调试其他语言,例如java,不需要列出库的调试信息。

  2. 这些debuginfo包包含从可执行文件中剥离的源代码和符号。它们只在调试时需要,因此在正常使用时是多余的。它们确实占用了相当多的空间,因此在生产发布期间被剥离。

  3. 这取决于。大多数 C 代码将使用glibc等。但是,如果您正在调试包 X 并且不需要深入研究内部结构,则glibc可以在不安装它的情况下进行管理。如果您想一直遵循代码gdb到低级glibc,或者您认为库本身存在错误,那么您需要安装它。另一方面,一些 C 代码可能是静态链接的,并且应该在它自己的 debuginfo 包中包含所需的一切,或者应用程序可以用另一种语言编写。两者都不需要安装这些。

  4. 是的。不安装这些包的结果是您将无法有效地调试到它们提供的例程中。与上面的 3 一样,这完全取决于您是否需要在该级别进行调试。

注意:您会发现许多应用程序已经过优化(-O在编译器中带有该标志)并且不能使用 debuginfo 很好地调试。解决方法是在没有任何优化的情况下重新编译。