Variablen, die mit g ++ und der Option -Og optimiert wurden

10

Wenn ich mein C ++ - Programm mit g++ mit der Option -Og kompiliere, sehe ich Variablen, die <optimized out> sind, und auch die aktuelle Zeile springt manchmal umher. Wird dieses Verhalten auf dieser Optimierungsstufe erwartet, oder habe ich ein Problem? Die Manpage von gcc sagt:

  

-Og

Debugging-Erfahrung optimieren. -Og ermöglicht Optimierungen, die das Debugging nicht beeinträchtigen. Es sollte der Optimierungsgrad der Wahl für den Standard-Edit-Compile-Debug-Zyklus sein, der ein vernünftiges Optimierungsniveau bietet, während eine schnelle Kompilierung und eine gute Debug-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.

    
Svaberg 15.07.2015, 16:16
quelle

1 Antwort

0

Dies ist normales Verhalten beim Kompilieren mit der Option -Og . Auf dieser Optimierungsebene darf der Compiler optimieren, solange er sich an die as-if Regel . Dies könnte das Entfernen von Variablen (oder die Konvertierung in Konstanten) sowie das Löschen nicht verwendeter Funktionen beinhalten.

Die Empfehlung ist, sich entweder an das Überspringen zu gewöhnen oder mit der Option -O0 zu kompilieren.

    
Svaberg 15.06.2016, 08:39
quelle

Tags und Links