www.mikrocontroller.net

Forum: Compiler & IDEs gcc 3.4.2 zum gcc 4.2.0 problem


Autor: Tomi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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)?

Autor: Tomi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe AvrStudio 4.13.
Optimierung habe ich bei beiden -O2

BYE

Autor: Markus Burrer (Firma: Embedit Mikrocontrollertechnik) (_mb_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit aktiver Optimierung funktioniert das Debugging nicht

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Markus Burrer (Firma: Embedit Mikrocontrollertechnik) (_mb_)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ha Jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: klogang beendet (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ha Jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Paris (Gast)
Datum:

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

Autor: Rolf Magnus (Gast)
Datum:

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

Autor: Tomi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: die ??? (Gast)
Datum:

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

Funktionieren!?



Entschuldige Chef, musste sein  ;-)

duck und wecccch

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.