2009-08-27 10 views
7

私は-fno-omit-frame-pointerが最適化なしで何をするのだろうと思っていましたか?-fno-omit-frame-pointer without optimization

CXXFLAGS = -Wall -ggdb3 -DDEBUG -fno-省略フレームポインタ

それはfomitフレームポインタ自動-Oのすべてのレベルでオンになっていない(ただし - O0)?私の例では、デフォルトで-O0と仮定します。

ありがとうございました!

+0

x86およびファミリでは、 '-fomit-frame-pointer'はデバッグを妨げる可能性があるため、デフォルトで高レベルの最適化レベルが有効になっていません。 –

+2

x86-64やarmなどのアーキテクチャでは、デフォルトで生成されたフレームポインタはありません(ABIで指定されています)。このオプションを指定すると、コンパイラはフレームポインタレジスタを生成します。 –

答えて

6

あなたがすでに暗示しているように、フレームポインタがデフォルトの-O0で省略されないので、-fno-omit-frame-pointerは無視されます。

2

私が理解しているように、Oxは一連の最適化フラグのショートカットです。デフォルトの最適化はゼロであるため、Oxを使用せずに1つのフラグを使用すると、その最適化だけが行われます。

私の意見では、フレームポインタを省略すると、デバッグの難しさが増し、パフォーマンスが少し向上します。

+0

* "私の意見では、フレームポインタを省略すると..." - スタックトレースはほとんど役に立ちません。 'bt full'は不自由な人になるでしょう。 – jww