Wenn ich mein C++ - Programm mit g++
mit der -Og
Option kompilieren, sehe ich Variablen, die <optimized out>
sind, und auch die aktuelle Zeile manchmal überspringt. Wird dieses Verhalten auf dieser Optimierungsstufe erwartet, oder habe ich ein Problem? Die Manpage von gcc sagt:Variablen optimiert mit g ++ und die Option -Og
-Og
Optimieren der Debuggerfahrung.-Og
ermöglicht Optimierungen, die das Debugging nicht beeinträchtigen. Es sollte die Optimierungsstufe der Wahl für den Standard-Edit-Compile-Debug-Zyklus sein, die ein angemessenes Optimierungsniveau bietet, während eine schnelle Kompilierung und eine gute Debugging-Erfahrung beibehalten werden.
daher habe ich dieses Verhalten nicht erwartet. Auf meinem System habe ich g ++ Version 4.9.2 und gdb Version 7.7.1.
"... mit einem * vernünftigen * Optimierungsgrad ..." –
Der Compiler darf solange optimieren, wie die * as-if * Regel eingehalten wird. Dies könnte das Entfernen von Variablen (oder die Konvertierung in Konstanten) sowie das Löschen nicht verwendeter Funktionen umfassen. –
Ich verstehe. Mein Hauptproblem besteht darin, dass die aktuelle Zeile in einer Weise, die ich nicht erwarte/vergesse, in verschiedenen Funktionen hin- und herspringt. Wäre es für mich dann am besten, die -OO-Option zu verwenden? Oder gibt es eine gute Möglichkeit, das Verhalten zu verstehen und bei "-Og" zu bleiben? – Svaberg