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?
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.
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.
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.
Auf Optimierungsstufe -O1 sind die "Sprünge" doch gar nicht so wild. Das lässt sich noch prima nachvollziehen. Oliver
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.
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.
Keine Ahnung warum er da bins draus gemacht hat (war vom Handy aus). Mixed: http://www.keil.com/support/man/docs/ecluv/ecldisassembly1.png Parallel: http://www.coocox.org/wiki/images/markdown/assets/images/CoIDE/image367.jpg
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.