www.mikrocontroller.net

Forum: Compiler & IDEs GCC und Optimierung


Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab hier auf meinem Linux einen GCC4.1.2 und möchte damit Code für 
meinen PC kompilieren.

Bei den Flags ist mit -O2 Optimierung eingeschaltet. Außerdem -g für's 
Debuggen.

Als Nebeneffekt verwendet GCC dann ab -O1 außerdem die Option 
"-fomit-frame-pointer", die meinen GDB beim Debuggen im Single-Step 
durcheinander bringt.

Weiß jemand, ob man GCC dazu zwingen kann Frame-Pointer anzulegen ohne 
gleich die ganze Code-Optimierung deaktivieren zu müssen?

Mfg
Thomas Pototschnig

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-fno-omit-frame-pointer

Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der GCC schluckt zwar die Option, aber der GDB kommt leider immer noch 
nicht damit klar. Ich werd aber mal googeln und schaun ob ich da noch 
mehr dazu finden kann.

Danke!

Mfg
Thomas Pototschnig

Autor: Fabian Scheler (rosepeter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Als Nebeneffekt verwendet GCC dann ab -O1 außerdem die Option
> "-fomit-frame-pointer", die meinen GDB beim Debuggen im Single-Step
> durcheinander bringt.

hm, ich kann mir nur schwer vorstellen, dass der Frame-Pointer Einfluss 
auf den Single-Step Modus haben soll, wenn es darum geht, lokale 
Variablen anzusehen, kann der Frame-Pointer helfen, ist aber auch nicht 
unbedingt notwendig.

Das Phänomen, das du beobachtest (wahrscheinlich macht es den Eindruck, 
dass der GDB im Quelltext hin und her springt, oder?), dürfte damit zu 
tun haben, dass der GCC evtl. Instruktionen umsortiert und sich die 
Abfolge der Instruktionen nicht mehr so einfach auf den Quelltext zurück 
abbilden lässt.

Ciao, Fabian

Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das Phänomen, das du beobachtest (wahrscheinlich macht es den Eindruck,
> dass der GDB im Quelltext hin und her springt, oder?), dürfte damit zu
> tun haben, dass der GCC evtl. Instruktionen umsortiert und sich die
> Abfolge der Instruktionen nicht mehr so einfach auf den Quelltext zurück
> abbilden lässt.

Das kann auch sein ... ich glaube mich daran erinnern zu können, dass 
man die Code-Umsortiererei abschalten kann.

Weiß das zufällig grad jemand?

Mfg
Thomas Pototschnig

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
beim Optimieren werden ja z.Teil ganze Sequenzen wegfallen oder Sprünge 
an Adressesn rauskommen die aufs gleiche return führen, am genauesten 
wird es mit -O0, also Optimierung aus.

Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
JojoS wrote:
> beim Optimieren werden ja z.Teil ganze Sequenzen wegfallen oder Sprünge
> an Adressesn rauskommen die aufs gleiche return führen, am genauesten
> wird es mit -O0, also Optimierung aus.

Mit -O0 funktioniert das Steppen auch. Dummerweise laufen dann aber auch 
noch meine Bildverarbeitungs-Algorithmen unoptimiert, die dann viel 
länger brauchen und da macht das Debuggen dann auch keinen Spaß mehr.

Aber es scheint so, als würde ich nicht um -O0 herumkommen.

Mfg
Thomas Pototschnig

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Möglichkeite wäre, unterschiedliche Programmmodule selektiv mit
oder ohne Optimierung zu kompilieren. Wenn deine Bildverarbeitungs-
algorithmen schon bugfrei sind, kannst du sie mit -O2 kompilieren und
vielleicht sogar als unabhängiges Projekt in eine Library
zusammenfassen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.