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用にこれらのパッケージをインストールする必要がありますか?
- このパッケージをインストールしなくても大丈夫ですか?どんな効果がありますか?
ベストアンサー1
いいえ。
gdb
ある管理者がパッケージ化し、glibc
別の管理者がパッケージ化し、すべて別の管理者がパッケージ化しますgcc
。libstdc
このデバッグ情報をパッケージ化するには、gdb
多くの調整が必要です。パッケージのいずれかが変更されるたびに、管理者はgdb
それを再パッケージしてリリースする必要があります。管理するのはかなり面倒です。たとえば、リストされているライブラリのデバッグ情報を必要としないgdb
他の言語をデバッグすることもできます。java
これらの
debuginfo
パッケージには、実行可能ファイルから削除されたソースコードとシンボルが含まれています。デバッグ中にのみ必要なので、通常の使用中は重複します。かなりのスペースを占めるので、本番ビルド中に削除されました。時々違うよねほとんどのCコードは
glibc
背中を使用します。ただし、パッケージXをデバッグして内部を詳しく調べる必要がない場合は、パッケージglibc
Xをインストールせずに管理できます。コードをgdb
一番下まで進めるか、ライブラリ自体にバグがあると思われる場合はインストールするglibc
必要があります。一方、一部のCコードは静的にリンクでき、独自のdebuginfoパッケージに必要なすべてを含める必要があります。そうしないと、アプリケーションが別の言語で書かれる可能性があります。どちらも設置する必要はありません。はい。これらのパッケージをインストールしないと、そのパッケージが提供するルーチンを効果的にデバッグできなくなります。上記の3に示すように、すべてはそのレベルでデバッグする必要があるかどうかによって異なります。
メモ:-O
多くのアプリケーションが最適化されていますが(コンパイラのフラグを使用して)、debuginfoを使用して正しくデバッグされないことがわかります。回避策は、最適化なしで再コンパイルすることです。