別のデバッグ情報がありません。

別のデバッグ情報がありません。

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

私の質問:

  1. これらのパッケージはデフォルトでGDBに存在する必要がありますか?
  2. 各パッケージの機能は何ですか?
  3. 実際の本番環境でGDB用にこれらのパッケージをインストールする必要がありますか?
  4. このパッケージをインストールしなくても大丈夫ですか?どんな効果がありますか?

ベストアンサー1

  1. いいえ。gdbある管理者がパッケージ化し、glibc別の管理者がパッケージ化し、すべて別の管理者がパッケージ化しますgcclibstdcこのデバッグ情報をパッケージ化するには、gdb多くの調整が必要です。パッケージのいずれかが変更されるたびに、管理者はgdbそれを再パッケージしてリリースする必要があります。管理するのはかなり面倒です。たとえば、リストされているライブラリのデバッグ情報を必要としないgdb他の言語をデバッグすることもできます。java

  2. これらのdebuginfoパッケージには、実行可能ファイルから削除されたソースコードとシンボルが含まれています。デバッグ中にのみ必要なので、通常の使用中は重複します。かなりのスペースを占めるので、本番ビルド中に削除されました。

  3. 時々違うよねほとんどのCコードはglibc背中を使用します。ただし、パッケージXをデバッグして内部を詳しく調べる必要がない場合は、パッケージglibcXをインストールせずに管理できます。コードをgdb一番下まで進めるか、ライブラリ自体にバグがあると思われる場合はインストールするglibc必要があります。一方、一部のCコードは静的にリンクでき、独自のdebuginfoパッケージに必要なすべてを含める必要があります。そうしないと、アプリケーションが別の言語で書かれる可能性があります。どちらも設置する必要はありません。

  4. はい。これらのパッケージをインストールしないと、そのパッケージが提供するルーチンを効果的にデバッグできなくなります。上記の3に示すように、すべてはそのレベルでデバッグする必要があるかどうかによって異なります。

メモ:-O多くのアプリケーションが最適化されていますが(コンパイラのフラグを使用して)、debuginfoを使用して正しくデバッグされないことがわかります。回避策は、最適化なしで再コンパイルすることです。

おすすめ記事