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
我的問題:
- 這些包是否應該預設在 GDB 中?
- 這些包中的每一個的功能是什麼?
- 在實際生產環境中,是否應該為 GDB 安裝這些包?
- 如果我不安裝這些軟體包可以嗎?會有什麼效果?
- No.
gdb
由一個維護者glibc
打包,由另一個維護者打包gcc
,libstdc
等等,所有這些都由不同的維護者打包。為這些打包調試資訊gdb
需要相當大的協調。每次其中一個包發生變化時,gdb
維護者都必須重新打包和發布。管理起來會很麻煩。gdb
還可以調試其他語言,例如java
,不需要列出的庫的調試資訊。- 這些
debuginfo
包包含從執行檔中剝離的原始碼和符號。它們僅在調試期間需要,因此在正常使用期間是多餘的。它們確實佔用了相當多的空間,因此在生產發布期間被剝離。- 這取決於。大多數 C 程式碼將使用
glibc
等。但是,如果您正在調試包 X 並且不需要深入研究內部結構,glibc
您可以在不安裝它的情況下進行管理。如果您想一直跟踪程式碼gdb
到低級glibc
,或者您認為庫本身存在錯誤,那麼您需要安裝它。另一方面,一些 C 程式碼可能是靜態連結的,並且應該在它自己的 debuginfo 包中包含所需的一切,或者應用程序可以用另一種語言編寫。兩者都不需要安裝這些。- 是的。不安裝這些軟體包的影響是您將無法有效地調試它們提供的常式。與上面的 3 一樣,這完全取決於您是否需要在該級別進行調試。
**注意:**您會發現許多應用程序已經過優化(使用
-O
編譯器中的標誌)並且使用 debuginfo 不能很好地調試。一種解決方法是重新編譯而不進行任何優化。