2016-10-18 10 views
0

私はこのMakefileのデバッグフラグ(位相/リンクフェーズをコンパイル)

application=<somebinaryname> 
CXXFLAGS=-g -std=c++14 -Wall -Werror -pedantic 
LDFLAGS=-g 

auto: $(application) 

$(application): main.o aaa.o aab.o aba.o baa.o 
     $(CXX) $(LDFLAGS) -o [email protected] $^ 

%.o: %.cpp 
     $(CXX) $(CXXFLAGS) -c $< -o [email protected] 

# rest of Makefile not relevant to my question 

を持って -gオプションは(CXXFLAGSで)コンパイルフェーズ中に行くことになっている場合、誰かが私に教えてくださいすることができリンクフェーズ中(LDFLAGSを使用)?私はどこにでも例やドキュメントを探したが、それらすべてが(でもmanページ)のような非常に些細な例があります。

gcc -g -o binary source.cpp 

私はそれを得るが、それははるかに私に教えてくれありません。

これ以上の明確性はありますか?

答えて

0

-gデバッグ情報を生成します。 Cプログラムを-gオプションでコンパイルします。これにより、コンパイラはデバッグ情報を収集することができます。次に、gdbを使ってバイナリをデバッグすることができます。

私は謝罪いくつかの便利なリンク

http://www.thegeekstuff.com/2010/03/debug-c-program-using-gdb/

https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html

GCC -g vs -g3 GDB Flag: What is the Difference?

+0

。私の質問はおそらく十分に明確ではなかった。あなたのリンクはすでに5000種類の異なる文書に存在する情報を繰り返します。私は、-gがすべてのシンボル名をそのまま使用して、最適化されていないデバッグバイナリを生成することを知っています。私はデバッグとは何か、デバッグファイルとは何か、使用されている理由、使用方法、そして何年もそれを使用してきたことを知っています。しかし、私が不確かなのは、 '-g'や '-ggdb'がコンパイル段階( '-c'のように)やリンク段階で実行されるべきかどうかです。もう一度、私の具体的なMakefileの例では、CXXFLAGSやLDFLAGS、あるいはその両方のようにする必要がありますか? –

関連する問題