Forum: Compiler & IDEs Merkwürdige Fehler mit avr-gcc mit Eclipse


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Uhu U. (uhu)


Angehängte Dateien:

Lesenswert?

Ich versuche ein altes Projekt mit avr-gcc zu compilieren und laufe auf 
sehr merkwürdige Fehler.

Der Compiler ist avr-gcc (GCC) 4.8.2 mit Eclipse Version: Mars.1 Release 
(4.5.1) Build id: 20150924-1200

Es ist die erste Zeile mit Fehler, es folgen weitere Merkwürdigkeiten.

Die Fehlermeldungen lauten:
1
Symbol 'TWPS0' could not be resolved
2
Symbol 'TWPS1' could not be resolved

Was soll das denn?

von Oliver S. (oliverso)


Lesenswert?

Das ist eine Fehlermeldung von der Syntaxprüfung des Editors. Der kann 
nicht alle Includes auflösen. Das Projekt wird vermutlich trotzdem 
compilieren.

Irgendwo in den Optionen kannst du die Syntaxprüfung des Editors 
ausschalten, dann verschwinden all diese Falschmeldungen.

Oliver

von Bernd K. (prof7bit)


Lesenswert?

Öffne die Projekteinstellungen, ändere die CPU auf irgendeinen anderen 
Wert, klick auf OK, öffne die Projekteinstellungen wieder, stell sie 
wieder zurück auf den richtigen Wert, klick wieder auf OK und das 
Problem sollte weg sein.

Ist ein alter Bug im AVR-Plugin, seit Jahren schon.

von Uhu U. (uhu)


Lesenswert?

Bernd K. schrieb:
> klick wieder auf OK und das Problem sollte weg sein.

Leider nicht. Der einzige Unterschied ist, dass der Fehler eine Zeile 
höher gerutscht ist.

Es sieht so aus, als würde er keines der AVR-Typspezifischen Defines 
kennen, obwohl dieser Test anschlägt:
1
#ifdef TWPS0
2
#error TWPS0 ist definiert
3
#endif

Zudem werden sämtliche typedefs aus stdint.h, wie z.B. uint8_t, als 
unbekannt moniert.

von Jörg E. (jackfritt)


Lesenswert?

Bei mir wurde es mit jeder Eclipse Version schlimmer.
Deswegen bin ich irgendwann stehengeblieben und zwar bei der
Version wo man einmal die CPU wechseln muss ;)

Kann bei Interesse morgen mal die Version raussuchen. Das avr plugin 
wird ja leider nicht mehr gepflegt...

von Oliver S. (oliverso)


Lesenswert?

Deaktivier doch einfach die Eclipse-Syntaxprüfung, und alles ist gut. 
Die wird tatsächlich von Version zu Version katastrophaler.

Der Compiler sagt einem schon beim compilieren, wenn wirklich was nicht 
stimmt.

Oliver

von Uhu U. (uhu)


Lesenswert?

Oliver S. schrieb:
> Deaktivier doch einfach die Eclipse-Syntaxprüfung

Hast du eine Idee, wo der zugehörige Knopf verbuddelt ist?

von Oliver S. (oliverso)


Lesenswert?

Window->preferences->C/C++->Code Analysis

Da kannst du den Wahnsinn sogar feinjustieren :)

Oliver

von Uhu U. (uhu)


Lesenswert?

Oliver S. schrieb:
> Da kannst du den Wahnsinn sogar feinjustieren :)

Ich hab erst mal alles abgeklemmt und das hatte zumindest zu Folge, dass 
keine Fehlermeldungen mehr kommen und der Compiler glatt durch läuft...

Eclipse ist eine eierlegende Wollmichsau, die vor lauter Wollmilcheiern 
nicht mehr laufen kann.

Nur der 64-Bit-Firefox ist lahmarschiger.

von Oliver S. (oliverso)


Lesenswert?

Uhu U. schrieb:
> und der Compiler glatt durch läuft...

Der Compiler läuft auch mit den Fehlermeldungen glatt durch. Die 
Eclipse-Syntaxprüfung ist völlig unabhängig vom Compiler. Und am Ende 
zählt eh nur, was der sagt.

Oliver

von Bernd K. (prof7bit)


Lesenswert?

Oliver S. schrieb:
> Deaktivier doch einfach die Eclipse-Syntaxprüfung

Das ist grober Unfug. Wenn Eclispe die Includes nicht findet dann kann 
er auch gleich Notepad statt Eclispe nehmen denn dann wird auch das 
komplette Code-Assist und die Navigation im Code nicht mehr gehen, wozu 
braucht er dann überhaupt noch ne IDE?

Der korrekte Weg ist das einmal richtig zu konfigurieren so daß in 
Zukunft immer alles geht anstatt einfach alle Features zu deaktivieren 
derentwegen man das Produkt überhaupt verwendet.

von Oliver S. (oliverso)


Lesenswert?

Bla bla...

Blubb.

Mach, was du willst, oder laß es.

Oliver

von Uhu U. (uhu)


Lesenswert?

Bernd K. schrieb:
> Das ist grober Unfug. Wenn Eclispe die Includes nicht findet dann kann
> er auch gleich Notepad statt Eclispe nehmen denn dann wird auch das
> komplette Code-Assist und die Navigation im Code nicht mehr gehen, wozu
> braucht er dann überhaupt noch ne IDE?

Ist es nicht. Grober Unfug ist Eclipse mit seiner aberwitzigen 
Hintergrundwerkelei. Das Ding ist ätzend langsam, nur Firefox ist 
schlimmer...

von Carl D. (jcw2)


Lesenswert?

Beide Programme leben vom Hauptspeicher. Wenn man damit nicht geizt, 
dann klappt das schon. Und man muß eigentlich nur eine Stange Raufware 
nicht kaufen, schon ist's bezahlt. Schreibt ein Nichtraucher aus einer 
halbrauchenden Familie.

von Uhu U. (uhu)


Lesenswert?

Carl D. schrieb:
> Beide Programme leben vom Hauptspeicher. Wenn man damit nicht geizt,
> dann klappt das schon.

Meine Mühle hat 16 GB, davon frei sind meistens > 50% - was daran da 
"geizig" sein soll, musst du erklären.

> Schreibt ein Nichtraucher aus einer halbrauchenden Familie.

Was soll das denn?

von Oliver S. (oliverso)


Lesenswert?

Bernd K. schrieb:
> Der korrekte Weg ist das einmal richtig zu konfigurieren so daß in
> Zukunft immer alles geht

Ist ja prinzipiell richtig, nur leider im Falle von Eclipse (und 
besonders der bescheuerten Syntaxprüfung) ein frommer Wunschtraum.

Uhu U. schrieb:
> Bernd K. schrieb:
>> klick wieder auf OK und das Problem sollte weg sein.
>
> Leider nicht. Der einzige Unterschied ist, dass der Fehler eine Zeile
> höher gerutscht ist.

Oliver

von Bernd K. (prof7bit)


Lesenswert?

Oliver S. schrieb:
> Ist ja prinzipiell richtig, nur leider im Falle von Eclipse (und
> besonders der bescheuerten Syntaxprüfung) ein frommer Wunschtraum.

Komisch, bei den meisten Leuten ist der der Traum Realität, so zum 
Beispiel auch bei mir: im Verlauf des letzen Jahres hab ich Eclipse auf 
mindestens 4 verschiedenen neuen Rechnern neu aufgesetzt (1*Kubuntu, 
2*Win7, 1*Win10) und überall manifestierte sich der Traum gleich im 
ersten Anlauf ganz von selbst in der Realität.

von Carl D. (jcw2)


Lesenswert?

> Carl D. schrieb:
>> Beide Programme leben vom Hauptspeicher. Wenn man damit nicht geizt,
>> dann klappt das schon.
>
> Meine Mühle hat 16 GB, davon frei sind meistens > 50% - was daran da
> "geizig" sein soll, musst du erklären.
>
>> Schreibt ein Nichtraucher aus einer halbrauchenden Familie.
>
> Was soll das denn?

1. Bei mir läuft Eclipse und Firefox parallel auf 4Gb ohne unzumutbare 
Wartezeiten. OS ist Linux. Und ja ich hab das auch Windows7 im Einsatz, 
da sollte es eher das Doppelte sein.

2. Es ging (im nichtzitierten Text) um einen Vergleich der Kosten für 
Speicher mit (für manche) gängigen Verbrauchswaren. Kann man mit dem 
rausgerupften Textfragment nur nicht erkennen.

Zu "16G und trotzdem langsam": Eclipse hat eine Konfigurationsdatei für 
den Start der Java-VM. Wenn da noch der Defaultwert von 512Mb drinsteht, 
dann kann man das durch mehr RAM nicht ändern. Da muß man mit einem 
Texteditor ran. Wie das geht steht z.B. hier:

http://stackoverflow.com/questions/15313393/how-to-increase-application-heap-size-in-eclipse

von Uhu U. (uhu)


Lesenswert?

Carl D. schrieb:
> 2. Es ging (im nichtzitierten Text) um einen Vergleich der Kosten für
> Speicher mit (für manche) gängigen Verbrauchswaren. Kann man mit dem
> rausgerupften Textfragment nur nicht erkennen.

Sorry, es ging um völlig irrelevante und falsche Unterstellungen und 
damit vollkommen am Thema vorbei und was du von irgendwelchen 
Suchtmitteln hälst, interessiert nicht.

Carl D. schrieb:
> Zu "16G und trotzdem langsam": Eclipse hat eine Konfigurationsdatei für
> den Start der Java-VM. Wenn da noch der Defaultwert von 512Mb drinsteht,
> dann kann man das durch mehr RAM nicht ändern. Da muß man mit einem
> Texteditor ran. Wie das geht steht z.B. hier:

Warum schreibst du dann erst so einen hanebüchenen Blödsinn? Warum nicht 
gleich so?


Ich habe den Speicher auf 2GB gesetzt - schneller ist das Teil jetzt, 
aber von wirklich schnell ist es noch weit entfernt. Ich sehe noch immer 
das Geruckel im File Explorer.

Außerdem ist das Ursprungsproblem - hunderte völlig blödsinniger 
Fehlermeldungen von der Eclipse-Syntaxprüfung - noch immer da, wenn ich 
die Syntaxprüfung einschalte.

Wie bekomme ich die weg?

Ich hoffe, dir ist klar, dass es sich um AVR-Projekte mit dem AVR-Plugin 
dreht - bei Linux-Projekten gibts den Spuk nicht.

von Carl D. (jcw2)


Lesenswert?

> Ich hoffe, dir ist klar, dass es sich um AVR-Projekte mit dem
> AVR-Plugin dreht - bei Linux-Projekten gibts den Spuk nicht.

Ich schrieb: OperatingSystem ist Linux.
Was ich nicht schrieb: auch ich verwende das AVR-Plugin und ja ich kenne 
dieses Phänomen auch und ich lese hier mit, um eventuell Infos abstäuben 
zu können. Denn bisher hab ich auch nach der Devise "nur der GCC sagt 
die Wahrheit" gearbeitet. Leider war ich heute Abend zu faul, irgend was 
von dem geschriebenen auszuprobieren.
(Und es war nicht beabsichtigt, irgend eine Genusshandlung zu 
kritisieren, es ging rein um den Vergleich von Geldbeträgen)

von Uhu U. (uhu)


Lesenswert?

Der Tipp, vorübergehend den Controllertyp zu ändern, hats jedenfalls 
nicht gebracht. Bleibt nur, den - m.A. auch völlig überflüssigen - 
Syntax-Mist einfach abzuschalten, oder das Plugin zu reparieren.

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

Carl D. schrieb:
> Wenn da noch der Defaultwert von 512Mb drinsteht, dann kann man das durch
> mehr RAM nicht ändern. Da muß man mit einem Texteditor ran.

Ja, ein Hoch auf die superautomatisierte IDE. ;-)

(sorry, konnt ich mir nicht verkneifen)

von Oliver S. (oliverso)


Lesenswert?

Uhu U. schrieb:
> Bleibt nur, den - m.A. auch völlig überflüssigen -
> Syntax-Mist einfach abzuschalten, oder das Plugin zu reparieren.

Der völlig überflüssige Syntax-Mist macht nicht nur beim AVR-plugin 
Probleme. Mit aktuellem C++11/14 hat die auch so ihre Probleme. Gut 
gedacht, schlecht gemacht. Wie leider vieles an Eclipse.

Oliver

von Uhu U. (uhu)


Lesenswert?

Oliver S. schrieb:
> Gut gedacht, schlecht gemacht.

Das ist noch nichtmal gut gedacht. Das ist einfach mit Brachialgewalt 
was herfantasiert, was keiner braucht.

von no-use-for-a-name (Gast)


Lesenswert?

Einmal im Projekt sauber den Include Pfad unter C/C++ General -> Paths 
and Symbols setzen und danach den Index neu aufbauen, dann sollte 
Schluss mit den Fehlern sein. Ansonsten ist an anderer Stelle etwas grob 
verbastelt. Syntaxprüfung deaktivieren ist Unsinn, dann kann man auch 
ganz auf Eclipse verzichten.

von Uhu U. (uhu)


Angehängte Dateien:

Lesenswert?

no-use-for-a-name schrieb:
> Einmal im Projekt sauber den Include Pfad unter C/C++ General -> Paths
> and Symbols setzen und danach den Index neu aufbauen, dann sollte
> Schluss mit den Fehlern sein.

Dann verrate mir mal, was ich dort - außer den im Anhang aufgeführten 
Pfaden noch alles hinterlegen soll. Die Pfade existieren und enthalten 
die Dateien, die angeblich nicht gefunden werden.

> Syntaxprüfung deaktivieren ist Unsinn, dann kann man auch
> ganz auf Eclipse verzichten.

Ich bin 40 Jahre ohne solche Gimmics ausgekommen und sehe schlicht 
keinen Sinn darin. Schon gar nicht, wenn dadurch die normale Arbeit am 
Programmtext gestört wird, z.B. durch ruckeln.

von Karsten W. (lsmod)


Lesenswert?

Uhu U. schrieb:

> Ich bin 40 Jahre ohne solche Gimmics ausgekommen und sehe schlicht
> keinen Sinn darin. Schon gar nicht, wenn dadurch die normale Arbeit am
> Programmtext gestört wird, z.B. durch ruckeln.

Eine sehr gute Frage! :-))

Ich benutze einfach nur Kate mit Syntax Highlighting und C++ Helper 
Plugin und komme damit sehr gut zurecht.

Das Einzige was ich noch vermisse wäre eine Anzeige von 
Funktionsargumenten, wenn man eine Funktion beginnt zu tippen ...

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

Uhu U. schrieb:
> Ich bin 40 Jahre ohne solche Gimmics ausgekommen und sehe schlicht
> keinen Sinn darin.

Warum verwendest Du es dann und machst diesen albernen als Frage 
getarnten Eclipse-Bashing-Thread auf um Dich darüber auszuheulen? Bleib 
doch einfach bei dem Editor den Du schon seit 40 jahren verwendest.

von Oliver S. (oliverso)


Lesenswert?

no-use-for-a-name schrieb:
> Einmal im Projekt sauber den Include Pfad unter C/C++ General ->
> Paths
> and Symbols setzen

Du kennst Dieter Nuhr?

Also.

Das Problem hat bei AVR-Programmen mit den Pfaden nichts zu tun.

Oliver

von Bernd K. (prof7bit)


Lesenswert?

Ctrl + Linksklick auf:

#include <avr/io.h>

io.h wird geöffnet. Welcher der bedingten Includes ist nicht ausgegraut? 
Welche Symbole sind definiert?

von Uhu U. (uhu)


Lesenswert?

_AVR_ATmega328P_ - genau das, was ich eingestellt habe.

Ctrl + Linksklick auf #include <stdint.h> führt mit einem 
Zwischenschritt auf den Header, der die typedefs für uint8_t usw. 
enthält.

Das hält Ecplipe aber nicht davon ab, sämtliche Symbole, die dort 
definiert und nicht ausgegraut sind, als undefiniert zu melden.

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

Was sagt:

   Index -> search for unresolved includes

Hast Du irgendwas an den Indexer-Einstellungen verändert?

> ein altes Projekt

Wie alt? Was passiert wenn Du mal ein neues Projekt erzeugst (zwei mal 
Target MCU Type ändern nicht vergessen)?

Wenn Du die Fehler in der Problems Liste einfach löschst und dann auf 
Index->Rebuild gehst, kommen sie dann wieder? Tauchen die angeblich 
fehlenden Symbole auch nicht im Autocomplete auf?


Ich habe Eclipse Mars.1 und AVR-Plugin 2.4.1 hier unter Kubuntu 15.10 
und ich kann beim besten Willen auch durch mutwilliges Verstellen der 
Indexer-Einstellungen deinen Fehler nicht repoduzieren, auch nicht mit 
älteren Projekten die noch von Luna stammen. Sobald es den includes 
folgen kann hat es auch alle darin deklarierten Symbole gefressen. Ich 
kann mich auch nicht erinnern jemals in all den Jahren je so etwas 
schräges erlebt zu haben, entweder er findet sie gar nicht oder er 
findet sie und dann geht es aber auch.

Womöglich hast Du irgendwas grundlegendes kaputtkonfiguriert oder 
zerschossen, vielleicht hilft ja ein Neubeginn mit einem frischen 
jungfräulichen Eclipse, und von dann an bei jeder Konfiguration die vom 
Default abweicht selbiges irgendwo niederschreiben, zusammen mit 
Begründung warum es erforderlich war. Das spart Zeit und kann sich 
später als hilfreich erweisen.

von Bernd K. (prof7bit)


Lesenswert?

Nochwas:

Man kann bei einzelnen Dateien einige Einstellungen separat ändern 
(also die Projekteinstellungen überschreiben), oft versehentlich indem 
man auf der Datei rechte Maus->Properties verwendet anstatt das selbe am 
ganzen Projekt zu machen.

Dann taucht ein kleiner Schlüssel rechts oben am Datei-Icon auf um 
anzuzeigen daß für diese Datei abweichende Einstellungen gelten.

Abhilfe: Für jede betroffene Datei: Rechte Maus -> Ressource 
Configurations -> Reset to default

Danach: Index -> Rebuild.

von Uhu U. (uhu)


Lesenswert?

Bernd K. schrieb:
> Was sagt:
>
>    Index -> search for unresolved includes

Aha, jetzt kennt er die Symbole, mault aber jeden //-Kommentar mit "Line 
Comments '//' are not allowed" an. OK, das kann man konfigurieren.

Jetzt sind die Fehler weg - danke für die Nachhilfe.


> Hast Du irgendwas an den Indexer-Einstellungen verändert?

Nein. Das ist alles, wie es vor 3 Jahren war. Schon erstaunlich, dass er 
zwar gemerkt hat, dass das Projekt von einer anderen Version stammt, 
aber der Index offenbar einfach übernommen wird.

Den Controller-Typ habe ich schon mehrfach geändert.

> Ich habe Eclipse Mars.1 und AVR-Plugin 2.4.1 hier unter Kubuntu 15.10

Ich auch, allerdings unter Mint 17. Das Projekt stammt von Luna.


Also nochmal zusammenfassend, was ich gemacht habe

1. Controllertyp geändert → apply, dann dasselbe zurück
2. Project → C/C++ Index → Rebuild

: Bearbeitet durch User
von Felix P. (fixxl)


Lesenswert?

Es gibt inzwischen übrigens eine Version 2.4.2, zu beziehen über: 
http://www.ijzerbout.nl/avr-eclipse/updatesite/

Hier wird die 2.4.2 auch angezeigt: 
http://sourceforge.net/projects/avr-eclipse/files/avr-eclipse%20stable%20release/, 
über die Updateseite von Sourceforge 
(http://avr-eclipse.sourceforge.net/updatesite) bekommt man in Eclipse 
aber weiter die 2.4.1 angeboten.

: Bearbeitet durch User
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.