0

デバッグ シンボルが実際に生成されるコンパイル プロセスのフェーズ。

-g オプションを使用してオブジェクト ファイルをコンパイルすると、オブジェクト ファイル (共有ライブラリ、静的ライブラリ、実行可能ファイル) が組み込まれている可能性がある場合、出力には常にデバッグ シンボルが含まれますか? リンク時に -g を指定しない場合、出力バイナリにデバッグ シンボルが含まれますか?

4

2 に答える 2

0
  1. すべてのリロケータブル オブジェクト ファイルには、セクションにシンボル テーブルが.symtabあり、プログラムで定義および参照される関数とグローバル変数に関する情報が含まれています。ただし、コンパイラ内のシンボル テーブルとは異なり、シンボル テーブルに.symtabはローカル変数のエントリは含まれません。
  2. -g行番号などの追加のデバッグ情報を使用できるようにします。David が指摘したように、デフォルトの動作はコンパイラとプラットフォームによって異なります。
  3. 詳細については、このページを参照できます。
于 2013-06-06T05:10:54.157 に答える
0

一般に、-g はコンパイラ オプションです。コンパイラは、特定の命令を生成するためにどのソース コード行が使用されているかを認識しているからです。

ただし、リンカーによっては -g も指定する必要があり、リンカーによっては他のスイッチを指定する必要がある場合があります。 .o ファイルから必要なもの。

それはすべて、リンカーのドキュメントを読むことに帰着します。

于 2013-06-05T09:06:02.767 に答える