Gnu-debugger-gdb-debugging-symbols

提供:Dev Guides
2020年6月23日 (火) 07:59時点におけるMaintenance script (トーク | 投稿記録)による版 (Imported from text file)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先:案内検索

GDB-シンボルのデバッグ

  • デバッグシンボルテーブル*は、コンパイルされたバイナリプログラムの命令を、ソースコードの対応する変数、関数、または行にマップします。 このマッピングは次のようになります。
  • プログラム命令⇒アイテム名、アイテムタイプ、オリジナルファイル、行番号が定義されています。

シンボルテーブルは、プログラムに埋め込むか、別のファイルとして保存できます。 したがって、プログラムのデバッグを計画している場合は、プログラムのデバッグに必要な情報を含むシンボルテーブルを作成する必要があります。

シンボルテーブルに関する次の事実を推測できます。

  • シンボルテーブルは、プログラムの特定のバージョンで機能します。プログラムが変更された場合、新しいテーブルを作成する必要があります。
  • デバッグビルドは、多くの場合、小売(非デバッグ)ビルドよりも大きく、低速です。デバッグビルドには、シンボルテーブルとその他の補助情報が含まれています。
  • 自分でコンパイルしなかったバイナリプログラムをデバッグする場合は、作成者からシンボルテーブルを取得する必要があります。

GDBがすべての情報をシンボルテーブルから1行ずつ読み取れるようにするには、少し異なる方法でコンパイルする必要があります。 通常、プログラムを次のようにコンパイルします。

gcc hello.cc -o hello

これを行う代わりに、以下に示すように-gフラグを使用してコンパイルする必要があります。

gcc -g hello.cc -o hello