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
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
> 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
> 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
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.
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
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.