Forum: Compiler & IDEs Debugger und Otimierung


von Mattias (Gast)


Lesenswert?

hallo liebe Programmierer,
ich versuche mich gerade das erste mal mit dem Debugger im AVR-Studio.
ich habe ein Projekt, das ohne Optimierung nicht mehr in meinen 
Controller passt. Ist es wirklich richtig, dass bei eingeschalteter 
Optimierung der Instruktion Pointer im c File nicht mehr zu sehen ist, 
wenn man zB. step into aufruft ?
Wenn ja, wie kann man denn dann das Projekt debuggen ???
Danke schon im voraus
Gruß Mattias

von Oliver (Gast)


Lesenswert?

In den höheren Optimierungsstufen gibt es keine 1:1 -Zuordnung von 
C-Quellcode und Assemblertext, und gerade beim WinAVR führt das dann 
dazu, daß der Debugger macnhmal ziemlich sinnlos in der Gegend rumsteht.

Versuch es mal mit -O1. Das sollte auch schon kleineren Code erzeugen, 
ist aber etwas debugger-freundlicher.

Ansonsten bleibt nur noch, das Programm in Module zu zerlegen, und diese 
einzeln zu debuggen, oder auf einen größeren Controller auszuweichen.

Oliver

von Bernhard R. (barnyhh)


Lesenswert?

1. Im Debugger läßt sich auch auf Assembler-Darstellung umschalten. Dann 
funktioniert die gesamte Anzeigerei.

2. Wähle einen "größeren" Processor aus, der die benötigten 
Spezialregister mit gleichem Namen besitzt wie der von Dir eigentlich 
eingesetzte. Den Debugger im AVR-Studio läßt Du gegen den größeren 
Processor arbeiten - mit -O0. Wenn Du Das Programm dann für die reale 
Hardware compilierst, dann setzt Du die Compile-Optionen auf den echten 
Zielprocessor.

Beispiele für 2:
- ATMEGA 48 - 88 - 168
- ATMEGA 164 - 324 -644

Viel Erfolg!

Bernhard

von Rolf Magnus (Gast)


Lesenswert?

Debuggen von Code, der mit anderen als den später tatsächlich auf dem 
Controller eingesetzten Optionen compiliert wurde, ist für'n A***.
Gerade die Optimierungen fördern so einige Fehler im Code zutage, die 
man ohne gar nicht bemerkt.

von Mattias (Gast)


Lesenswert?

Hallo Bernhard,
das ist eine gute Idee, werde ich gleich mal probieren.
Gruß Mattias
und nochmals danke....

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.