Hallo liebe µC-Community! Seit einiger Zeit sind bei uns an der TH Bausätze des Nibo 2 Roboters vorhanden und werden zum Lernen für C für eingebettete Systeme eingesetzt. Allerdings ist das Gebiet teilweise etwas Neuland. Zum Problem: Ich habe Hiwi-mäßig den Kurs mit vorbereitet und unter anderem auch geschaut, mit welchen Tools plattformübergreifend C für AVR-Targets programmiert werden kann. Die Wahl fiel auf Eclipse CDT mit AVR-Plugin. Unter Windows kommt die neuste Version von WinAvr zum Einsatz, die Apple Menschen verwenden wohl Crosspack. Nun ist es so, dass in unterschiedlichen Programmen (auch aus den Tutorials des Herstellers des Nibo 2) auf unterschiedlichen Systemen unterschiedliche Funktionen und Variablen nicht korrekt aufgelöst werden. Das typische "xy could not be resolved" halt. Ihr habt sicherlich schon bemerkt, dass da jede Menge unterschiedlich drin war. Es verhält sich tatsächlich so, dass auf all unseren Laborrechnern in einem bestimmten Programm zwei extern eingebundene Variablen nicht aufgelöst werden. Alle anderen Funktionen, die über den gleichen Include kommen, werden aber ohne Probleme eingebunden. Die Versionen der verwendeten Bibliotheken, WinAvr, Plugin, Eclipse und eben auch der Programmcode sind jedoch die gleichen, wie auf meinem Rechner, bzw. wie auf den privaten Rechnern der werten Mitstudenten, wo diese speziellen Fehler nicht auftreten. Dafür treten vergleichbare Fehler sporadisch auf verschiedenen Rechnern der Kommilitonen auf. Im Prinzip handelt es sich immer um Probleme bei auflösen von eigebundenen Variablen und Funktionen. Wobei die zu Grunde liegenden Bibliotheken bei allen in der gleichen Version vorliegen, keine Includes im Code selbst fehlen und unter exakt gleichen Bedingungen die Fehler auf anderen Rechner nicht auftreten. Daher geht meine Frage an euch raus: Wie geht man systematisch vor, um dem Problem auf die Spur zu kommen? Vielen Dank für eure Antworten, ich hoffe ich hab' mich verständlich machen können ;)
Daniel W. schrieb: > Das typische "xy could not be resolved" halt. Genaue Fehlermeldung posten, denn ob es sich um eine Linker- oder Compilermeldung handelt, kann man nur daran erkennen. Und wenn es eine Linkermeldung ist, ist es kein Problem mit irgendwelchen Include-Dateien.
> Daher geht meine Frage an euch raus: > Wie geht man systematisch vor, um dem Problem auf die Spur zu kommen? Zusätzlich zum Vorgehen nach Rufus kann man in hartnäckigen Fällen Tools einsetzen, die zeigen, auf welche Dateien die Toolchain zugreifen will. Ein solches Tool ist Filemon (alter Name) bzw. dessen Nachfolger Process Monitor (http://technet.microsoft.com/de-de/sysinternals/bb896645)
> Dafür treten vergleichbare Fehler sporadisch auf > verschiedenen Rechnern der Kommilitonen auf. Vermutlich hast du keine Chance die Tools oben auf Fremdrechnern einzusetzen. Als Alternative könnte man eine standardisierte Entwicklungsumgebung in eine virtuelle Umgebung oder auf eine LiveCD (oder LiveStick) packen, die von den Studenten verwendet wird.
Hi, danke für die Antworten. @Rufus: Fehler kommt nachher, komm grad an die entsprechenden Rechner nicht ran. @Krapao: Process Monitor ist 'ne gute Idee, wird aber auf den Laborrechner nur für die Admins laufen. Aber für die privaten Rechner auf jeden Fall 'ne Möglichkeit. Ne fertige VM mit Ubuntu und allen Tools gibt's sogar schon. Wenn sich die Fehler am Ende nicht finden lassen, würde ich den Einsatz dann empfehlen. Allerdings wär mir 'ne Fehlerbehebung lieber, als ein Workaround.
So, ich konnte mittlerweile an die fraglichen Laborrechner. Die gute Nachricht ist, dass weder Compiler noch Linker tatsächlich Probleme machen. Dafür findet die Syntaxprüfung von Eclipse die Variablen nicht. Weiß jemand, wie man dem beikommen kann? Ist schon irritierend, wenn man Fehler gezeigt bekommt, die keine sind. PS: Der Kurs findet heute noch statt. Da werde ich nachher nochmal vorbeischauen, um nochmal einen Blick auf die privaten Rechner der Leute zuwerfen, die Probleme hatten.
Daniel W. schrieb: > Dafür findet die Syntaxprüfung von Eclipse die Variablen nicht. Altbekannter Effekt, leider ohne wirkliche Lösungsmöglichkeiten. Auf machen Windows XP (z.B. bei meiner, mit Eclipse Helios) verschwindet das Problem nach dem ersten build. Manchmal hilft auch eine neuerliches Indexieren des Projektes. Oliver
Daniel W. schrieb: > Weiß jemand, wie man dem beikommen kann? Für normale C/C++ Projekte muss man unter den Projekt-Eigenschaften unter C/C++ General, unter "Path und Symbols" die Pfade zu den includes eintragen. Aber bei WinAVR ist das vielleicht anders. Du solltest im Projekt Explorer im Projekt aber ein Verzeichnis "Includes" sehen, darunter die für den Indexer sichtbaren Includes.
Klaus Falser schrieb: > Du solltest im Projekt Explorer im Projekt aber ein Verzeichnis > "Includes" sehen, darunter die für den Indexer sichtbaren Includes. Das (altbekannte) Problem ist, daß die Pfade da sind, der Indexer aber trotzdem meckert. Irgendwo in den Tiefen der Beiträge zum avr-plugin steht auch, was da in Eclispe schief geht, aber eine allgemeingültige Lösung gibt da für m.W. nicht. Oliver
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.