Forum: Compiler & IDEs section `.text' will not fit in region / Atmel Studio Debugger


von Fliesenleger (Gast)


Lesenswert?

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?

von Frank (Gast)


Lesenswert?

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.

von Fliesenleger (Gast)


Lesenswert?

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.

von Frank (Gast)


Lesenswert?

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.

von Oliver S. (oliverso)


Lesenswert?

Auf Optimierungsstufe -O1 sind die "Sprünge" doch gar nicht so wild. Das 
lässt sich noch prima nachvollziehen.

Oliver

von Fliesenleger (Gast)


Lesenswert?

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.

von Frank (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Frank (Gast)


Lesenswert?


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
Noch kein Account? Hier anmelden.