我正在尝试在 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)
我的问题:
No.gdb
由一个维护者glibc
打包,由另一个维护者打包gcc
,libstdc
等等,所有都由不同的维护者打包。将这些调试信息打包在一起gdb
需要相当多的协调。每当其中一个包发生变化时,gdb
维护者就必须重新打包和发布。管理起来会很麻烦。gdb
也可以调试其他语言,例如java
,不需要列出库的调试信息。
这些debuginfo
包包含从可执行文件中剥离的源代码和符号。它们只在调试时需要,因此在正常使用时是多余的。它们确实占用了相当多的空间,因此在生产发布期间被剥离。
这取决于。大多数 C 代码将使用glibc
等。但是,如果您正在调试包 X 并且不需要深入研究内部结构,则glibc
可以在不安装它的情况下进行管理。如果您想一直遵循代码gdb
到低级glibc
,或者您认为库本身存在错误,那么您需要安装它。另一方面,一些 C 代码可能是静态链接的,并且应该在它自己的 debuginfo 包中包含所需的一切,或者应用程序可以用另一种语言编写。两者都不需要安装这些。
是的。不安装这些包的结果是您将无法有效地调试到它们提供的例程中。与上面的 3 一样,这完全取决于您是否需要在该级别进行调试。
注意:您会发现许多应用程序已经过优化(-O
在编译器中带有该标志)并且不能使用 debuginfo 很好地调试。解决方法是在没有任何优化的情况下重新编译。