section `.text' will not fit in region / Atmel Studio Debugger

Gast #4434662
Hallo!

Wie im Titel schon zu sehen ist bekomme ich die Fehlermeldung "section 
`.text' will not fit in region ..." wenn ich meinen Code mit -O0 
kompiliere. Mir ist schon klar was es beduetet und wieso ich ihn 
bekomme. Der Grund für -O0 ist aber dass beim debuggen im simulator 
(atmel studio) der cursor willkürliche Sprünge macht bei bestimmten 
befehlen (z.B. sei()).

Jetzt habe ich im Internet gelesen dass dies an der Optimierung liegen 
kann.. allerdings kann ich ohne nicht kompilieren und ich finde auch 
keine Option diesen Error zu ignorieren.

Habt ihr das Problem mit den Sprüngen beim debuggen auch oder wissst ihr 
woran das vielleicht liegen kann?
Gast
Fliesenleger schrieb:
> oder wissst ihr woran das vielleicht liegen kann?

Ja, das ist in der Tat "normal" und auch logisch.
Durch das verwenden der Optimierung versucht der Compiler einen 
optimalen Code (Größe/Performance) zu erzeugen wodurch gewisse Dinge 
evtl. ganz weg optimiert, umsortiert usw werden. Dadurch springt beim 
Debuggen dann meist der Cursor wild in der Gegend rum. Du kannst mal 
beim debuggen den erzeugten Assemblercode anzeigen lassen, dann siehst 
du es was er daraus macht und wo er gerade steht.

Du wirst wahrscheinlich nicht drum rum kommen deinen Code nach 
uneffektiven Stellen zu durchsuchen und zu optimieren (unbenötigte Libs, 
evtl unvetwendeter Code, Datentypen, ...)
Evtl reicht es für das Debuggen auch einen Controller zu wählen der mehr 
flash hat, wenn es einen vergleichbaren gibt.

Zeig mal den Code.
Gast
Den Code habe ich leider gerade nicht zur Hand, optimiert ist er noch 
nicht, werde das mal nachholen.

Mich würde interessieren wie die normale Vorgehensweise beim Debuggen 
ist wenn man nicht -O0 verwenden kann? Bei größeren Projekten kann es 
doch schon mal vorkommen, dass es nicht so einfach ist den Code so zu 
schreiben dass -O1 nichts mehr optimiert.
Gast
Fliesenleger schrieb:
> Mich würde interessieren wie die normale Vorgehensweise beim Debuggen
> ist wenn man nicht -O0 verwenden kann? Bei größeren Projekten kann es
> doch schon mal vorkommen, dass es nicht so einfach ist den Code so zu
> schreiben dass -O1 nichts mehr optimiert.

Ja ist normal.
Entweder das Problem auf ein Minimalcode runterbrechen
oder eben das Disassembly parallel aufmachen, verstehen was er da 
gemacht hat und schauen ob das richtige raus kommt was man erwartet ;-)
Ab und zu muss man halt doch noch ASM und Register anschauen.
Gast
Oliver S. schrieb:
> Auf Optimierungsstufe -O1 sind die "Sprünge" doch gar nicht so
> wild. Das
> lässt sich noch prima nachvollziehen.
>
> Oliver

Nun ja, er springt einfach irgendwohin und ist dann nicht mehr wirklich 
synchron mit dem Sourcecode.

Dann werde ich in Zukunft auch das Assembly-File hernehmen zum debuggen.
Danke für die Teilnahme an diesem Thread.
Gast
Fliesenleger schrieb:
> Dann werde ich in Zukunft auch das Assembly-File hernehmen zum debuggen.
> Danke für die Teilnahme an diesem Thread.

Normalerweise gibt es dafür in den IDEs eine extra Ansicht dafür. Damit 
kannst du dann entweder parallel oder ein einem Mixed Mode durch den 
Code steppen.

Beispiele siehe Anhang.
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.