2009-08-27 10 views
7

Mi chiedevo cosa farà il puntatore a zero-frame senza l'ottimizzazione?-fno-omit-frame-pointer senza ottimizzazione

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

non è che fomit-frame-pointer automatica attivata a tutti i livelli di -O (eccetto - O0)? Presumo nel mio esempio che sia -O0 di default.

Grazie e saluti!

+0

su x86 e famiglia, '-fomit-frame-pointer' è ** non ** abilitato di default per livelli di ottimizzazione più elevati perché potrebbe impedire il debug. –

+2

Si noti che su architetture come x86-64 e arm, non c'è alcun puntatore di fotogramma generato di default (è specificato nell'ABI), quindi questa opzione farà sì che il compilatore produca un registro puntatore di fotogramma. –

risposta

6

Come già intendi tu stesso, -fno-omit-frame-pointer viene semplicemente ignorato nel tuo caso, in quanto il puntatore del frame non dovrebbe essere omesso in ogni caso nel default -O0.

2

Come ho capito, Ox sono solo scorciatoie per un gruppo di flag di ottimizzazione. L'ottimizzazione di default è zero, quindi usare un solo flag senza Ox, dovrebbe fare proprio questa ottimizzazione.

A mio parere, l'omissione del puntatore del frame aumenta la difficoltà di debug per un modesto guadagno di prestazioni.

+0

* "A mio parere, omettendo il puntatore del frame ..." * - rende quasi inutili le tracce dello stack. 'bt full' sarà azzoppato. – jww