2009-08-27 7 views
7

Ich habe mich gefragt, was -fno-omit-frame-pointer ohne Optimierung geht?-fno-omit-frame-pointer ohne Optimierung

CXXFLAGS = -Wall -ggdb3 -DDEBUG -fno-omit-frame-pointer

Ist es nicht, dass -fomit-frame-pointer Auto drehte sich auf allen Ebenen der -O auf (mit Ausnahme - O0)? Ich gehe davon aus, dass es in meinem Beispiel standardmäßig -O ist.

Danke und Gruß!

+0

In x86 und Familie ist '-fomit-frame-pointer' ** nicht ** standardmäßig für höhere Optimierungsstufen aktiviert, da dies das Debugging beeinträchtigen könnte. –

+2

Beachten Sie, dass auf Architekturen wie x86-64 und arm kein Frame-Zeiger standardmäßig generiert wird (es ist in der ABI angegeben), so dass diese Option bewirkt, dass der Compiler ein Frame-Pointer-Register erzeugt. –

Antwort

6

Wie Sie bereits selbst andeuten, wird -fno-omit-frame-pointer in Ihrem Fall einfach ignoriert, da der Rahmenzeiger im Standard -O0 sowieso nicht weggelassen würde.

2

Wie ich es verstehe Ox sind nur Abkürzungen für eine Reihe von Optimierungsflags. Die Standardoptimierung ist Null, also sollte nur ein Flag ohne Ox verwendet werden.

Meiner Meinung nach, erhöht das Auslassen des Frame-Pointers die Debugging-Schwierigkeit für einen bescheidenen Leistungsgewinn.

+0

* "Meiner Meinung nach, den Rahmenzeiger weglassen ..." * - macht es Stack-Spuren fast nutzlos. 'bt full' wird verkrüppelt sein. – jww