Jörg Wunsch schrieb:
> GCC unterscheidet übrigens nicht zwischen "debug mode" und "release
> mode". Optimierung und Anlegen von Debuginformationen sind völlig
> voneinander unabhängig; auch bei aggressivser Optimierung (-O2 oder
> -O3) kann man immer noch Debuginformationen (-g) anlegen lassen und
> den Debugger darauf laufen lassen.
Was auf jeden Fall gilt ist:
-g, also debug-Info anlegen ja/nein, hat keinen Einfluß auf den
erzeugten Code. Falls doch, ist das als Compilerfehler anzusehen.
Andersrum ist das nicht ganz so klar, d.h. ich würd meine Hand nicht
dafür ins Feuer legen, daß Optimierung keinen Einfluß auf das Erzeugen
von Debug-Info hat.
Zeitgemäße Debug-Formate wie DWARF-4 bieten zwar Unterstützung für
optimierten Code, so wird zum Beispiel in
1 | void foo (void)
|
2 | {
|
3 | int var = 1;
|
4 | }
|
das Setzen von var in der Debug-Info dokumentiert auch wenn die
Zuweisung selbst weggeworfen und var nicht angelegt wird.
Ob -O* jedoch komplett neutral in Bezug auf Degug-Info ist würd ich
nach GCC-Intuition verneinen.