GCC -g と -g3 GDB フラグの違いは何ですか? 質問する

GCC -g と -g3 GDB フラグの違いは何ですか? 質問する

gcc または Clang を使用して C ソース コードをコンパイルする場合、常にフラグを使用して-ggdb のデバッグ情報を生成します。

gcc -g -o helloworld helloworld.c

代わりにを推奨している人がいることに気付きました。 フラグとフラグ-g3の違いは何ですか? また、との違いはありますか?-g-g3-g-ggdb

ベストアンサー1

からドキュメント:

-g

オペレーティング システムのネイティブ フォーマット (stabs、COFF、XCOFF、または DWARF 2) でデバッグ情報を生成します。GDB はこのデバッグ情報を処理できます。stabs フォーマットを使用するほとんどのシステムでは、-g により、GDB のみが使用できる追加のデバッグ情報の使用が有効になります。この追加情報により、GDB でのデバッグ作業は改善されますが、他のデバッガーがクラッシュしたり、プログラムの読み取りを拒否したりする可能性があります。追加情報を生成するかどうかを確実に制御する場合は、-gstabs+、-gstabs、-gxcoff+、-gxcoff、または -gvms を使用します (以下を参照)。

...


-ggdb

GDB で使用するためのデバッグ情報を生成します。これは、可能な限り GDB 拡張機能を含め、利用可能な最も表現力豊かな形式 (DWARF 2、スタブ、またはどちらもサポートされていない場合はネイティブ形式) を使用することを意味します。


-gvmsレベル

デバッグ情報を要求し、レベルを使用して情報の量を指定します。デフォルトのレベルは 2 です。レベル 0 ではデバッグ情報はまったく生成されません。したがって、-g0 は -g を否定します。

....

レベル 3 には、プログラム内に存在するすべてのマクロ定義などの追加情報が含まれます。一部のデバッガーでは、-g3 を使用するとマクロの展開がサポートされます。

おすすめ記事