2012-03-20 4 views

答えて

9

のように、g3を使ってコンパイルを試すことができます。

gcc -gdwarf-2 -g3 

私たちは、コンパイラがデバッグ情報でプリプロセッサマクロについて 情報が含まれて保証するために、2--gdwarfと-g3フラグを渡します。

または-ggdbを試すことができます。

+0

'-ggdb'は効果がありません。 [__cxa_finalizeでクラッシュするオブジェクトの解釈について](https://sourceware.org/ml/gdb/2011-08/msg00109.html)を参照してください(JanはGDB開発者の1人です)。 – jww

3

#define通常、シンボルはデバッグ情報の一部として含まれません。変数(またはinline functions for function-like macros)が通常より良いアイデアであり、これ以上の理由で(スコープ、型の安全性、複数の評価など)、可能であれば、いつでもプリプロセッサシンボルを使用することをお勧めします。

+0

@EmployedRussian:編集済み。 –

+0

+1は 'const'に有利ですが、私はそれらを' 'const''変数と呼んでいません;) – 0xC0000022L

+0

あなたの答えは' #define'の1種類、つまり定数を定義するものだけを引き継いでいます。他の多くのものが可能である。 '#define min(a、b)((a)<(b))? (a):(b) ' –

関連する問題