gcc-ggdbとgcc-gの違いは何ですか


91

gccを使用してCプログラムをコンパイルするとき、私は通常、-gいくつかのデバッグ情報をelfファイルに取得して、必要に応じてgdbが役立つようにします。

ただし、-ggdbデバッグ情報をよりgdbに適したものにすることになっているため、一部のプログラムがを使用していることに気付きました。

それらはどのように異なり、どちらを使用することをお勧めしますか?


注:プログラムまたはGCCをデバッグするためのオプションへのリンク、http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging-Options

回答:



63

-gそして-ggdb、いくつかのと類似しており、わずかな違い、私はこれを読んで、ここで

-g OS¹のネイティブ形式(スタブ、COFF、XCOFF、またはDWARF 2)でデバッグ情報を生成します。

-ggdb 特にgdbを対象としたデバッグ情報を生成します。

-ggdb3 たとえば、マクロ定義を含む追加のデバッグ情報を生成します。

-ggdbレベルを指定せずに単独でデフォルトを設定します-ggdb2(つまり、レベル2の場合はgdb)。


12

私が使用していた別のデバッグオプションよりも-ggdbの方がうまく機能した例が少なくとも1つあります。

注:これはx86-64ボックスでのみ発生し、-ggdbでコンパイルすると消えます。ただし、新しいバージョンのデバッガーは-gstabs +でも機能します


7

1つは、「-g」は移植可能であるということです(たとえば、非GNUプラットフォームで実行される予定のMakefileの場合)。最近、AIXマシンで-gと-ggdbに関する移植性の問題が発生したので、それを取り上げます。

ただし、-ggdbが使いやすさを向上させるものについてはわかりません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.