Forum: Compiler & IDEs gcc 3.4.2 zum gcc 4.2.0 problem


von Tomi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Bin nach langer zeit auf den neuen gcc 4.2.0 umgestigen.
Habe vorher 3.4.2 benutzt. (Von WinAVR20060421 aud WinAVR20071221)

Habe Problem mit lokalen variablen. Mit gcc 3.4.2 ist alles wunderbar.
Wenn ich mir AVRStudio debugge sehen ich die lokalen variablen.

Mit 4.2.0 sagt mir AVRStudio "Location not valid".

Das gleiche Problem habe ich auch mit WinAVR20070521.

Anbei der Code ausschnitt und AVRStudio Screenshot.

Hat jemand von euch eine Idee was daran unterschiedlich ist?

Danke erstmal.

BYE

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Hast du auch AVR Studio wie vorgesehen auf 4.13 geupdated?

Welche Optimierungsstufe benutzt du beim Übersetzen bzw. passiert das 
auch bei -O0 (keine Optimierung)?

von Tomi (Gast)


Lesenswert?

Ich habe AvrStudio 4.13.
Optimierung habe ich bei beiden -O2

BYE

von Markus B. (Firma: Embedit Mikrocontrollertechnik) (_mb_)


Lesenswert?

mit aktiver Optimierung funktioniert das Debugging nicht

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Markus Burrer wrote:

> mit aktiver Optimierung funktioniert das Debugging nicht

Das ist in dieser Pauschalität Quatsch.

Allerdings kann es natürlich mit aktiver Optimierung z. B. passieren,
dass der Compiler bestimmte Variablen (auch lokale) komplett
eliminiert.  Dann kann man sich logischerweise deren Wert nicht
ansehen.

von Markus B. (Firma: Embedit Mikrocontrollertechnik) (_mb_)


Lesenswert?

Also bei mir hat es mit Optimierung noch nie funktioniert. Der Debugger 
läuft zwar, aber irgendwann stimmt die Programmposition nicht mehr mit 
der Position im Sourcecode überein.

von Ha Jo (Gast)


Lesenswert?

Markus Burrer wrote:
> Also bei mir hat es mit Optimierung noch nie funktioniert. Der Debugger
> läuft zwar, aber irgendwann stimmt die Programmposition nicht mehr mit
> der Position im Sourcecode überein.

Das ist normal bei eingeschalteter Optimierung. Da kannst Compiler 
nehmen wie Du willst. Er sortiert halt so um, dass es nach seinem 
Ermessen OPTIMAL wird.
Deshalb paßt es dann unter Umständen nicht mehr mit dem Sourcecode 
zusammen.
Das er dabei diesen nicht mit umsortiert, ist schade, liegt wohl an der 
Bequemlichkeit des Compilers ;-)

@Tomi
Schalte mal die Optimierung ganz aus.

Hajo

von klogang beendet (Gast)


Lesenswert?

Man sollte nie auf eine neuere WinAVR updaten, wenn es nicht unbedingt 
notwendig ist. Es gab bisher keine einzige Version, bei der man nicht 
Änderungen an seinem Programm vornehmen musste, um es kompilieren zu 
können. Mal ganz abgesehen davon, dass in jeder neuen Version 
zusätzliche Bugs enthalten sind und die alten Bugs einfach nicht behoben 
werden.

Mit vorzüglicher Hchachtung

klogang beendet

von Ha Jo (Gast)


Lesenswert?

@Klogang

Der GCC ist absolut nicht so schlecht, wie er manchmal hier von einigen 
Leuten gemacht wird. Und wenn der Compiler nach einem Versionswechsel 
plötzlich viele Warnungen ausspukt, ist das nicht ein Problem des 
Compilers, sondern dort sitzt dann das Problem vor dem Bildschirm 
zwischen den Kopfhörern.

Das Problem beim Debuggen mit optimiertem Code ist schon gar kein 
Problem des Compilers.

Dieser Compiler wird in unzähligen kommerziellen Projekten verwenden, 
auch in der Raumfahrt. Perfekt ist er damit sicher nicht.

Außerdem kostet er nichts. Und dafür ist seine Leistung mehr als 
großartig. Und wem das trotzdem nicht gefällt, der kann doch auch einen 
anderen Compiler verwenden und nicht ständig darüber jammern.

So, das mußte mal gesagt werden.

Happy New Year an alle.
Hajo

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

klogang beendet wrote:

> Mal ganz abgesehen davon, dass in jeder neuen Version
> zusätzliche Bugs enthalten sind und die alten Bugs einfach nicht behoben
> werden.

Teil 1 des Satzes ist mehr oder weniger logisch.
Teil 2 des Satzes wirst du uns dann sicher noch beweisen wollen, damit
man dich nicht der üblen Nachrede (amerikanisch FUD: “fear, uncertainty,
disinformation”) bezichtigen kann.

von Rolf Magnus (Gast)


Lesenswert?

> Es gab bisher keine einzige Version, bei der man nicht Änderungen an
> seinem Programm vornehmen musste, um es kompilieren zu können.

Das passiert vor allem dann, wenn "man" Fehler im Programm hat, die der 
alte noch nicht erkannt hat. Neuere Versionen werden vor allem 
restriktiver, was die Konformität zur C-Norm angeht.

> Mal ganz abgesehen davon, dass in jeder neuen Version zusätzliche Bugs
> enthalten sind und die alten Bugs einfach nicht behoben werden.

Hast du davür konkrete Beispiele? Gibt es dazu Bugreports?

von Paris (Gast)


Lesenswert?

Das geilste war, als sich die Interruptgeschichte geändert hat und man 
die ISRs seiner Programme ändern musste.

von Rolf Magnus (Gast)


Lesenswert?

Das war aber keine Änderung am gcc, sondern an der avr-libc.

von Tomi (Gast)


Lesenswert?

Hallo.

Wollte ungern über die Qualität von gcc diskutieren.

Problem ist nur mit gcc 3.4.2 funktioniert die Funktion auch bei 
Optimierung.
Bei 4.2.0 geht sie nicht.

Man kann ja jetzt schlecht alle funktionen durchgehen wenn man gern 
updaten möchte.

BYE

von Karl H. (kbuchegg)


Lesenswert?

Tomi wrote:
> Hallo.
>
> Wollte ungern über die Qualität von gcc diskutieren.
>
> Problem ist nur mit gcc 3.4.2 funktioniert die Funktion auch bei
> Optimierung.
> Bei 4.2.0 geht sie nicht.

Dann zeig doch mal die Funktion her.
Und wenn du 'funktioniert nicht' bitte noch etwas
präzisieren könntest.
Was auch gut wäre: Was soll denn die Funktion grundsätzlich
machen?

von die ??? (Gast)


Lesenswert?

Karl heinz Buchegger wrote:
> Was soll denn die Funktion grundsätzlich machen?

Funktionieren!?



Entschuldige Chef, musste sein  ;-)

duck und wecccch

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.