Ich verwende aktuelles AVRStudio und aktuelles WINAVR Paket. Normalerweise bringt einen der Doppelklick auf eine Fehlermeldung direkt zur passenden Stelle im Quelltext. Dies funktioniert nicht mehr seit ich die neuen Versionen von WINAVR und AVRStudio installiert habe. Zudem sind die Fehlermeldungen auf Deutsch und beinhalten falsche Sonderzeichen. Vermute, die Compiler-Fehlerausgabe muss nur von Deutsch auf Englisch umgestellt werden. Aber wie ? Vielen Dank im Voraus! Gruss Sascha
Jas das hängt mit der eh korrupten deutschen Fehleranzeige zusammen. Ich habe bei mir einfach das File: C:\WinAVR\share\locale\de\LC_MESSAGES\gcc.mo gelöscht, dann AVRStudio neu gestartet. Nun erscheinen die Fehlermeldungen in Englisch und man kann munter draufklicken.
Besten Dank nochmal! Funktioniert nun! ...muss ja klappen, wenn der Meister persönlich antwortet. Gruss Sascha
Korrupt ist übrigens nicht die Fehleranzeige -- das ist ein Feature, und dass gerade Windows-Nutzer sich über die Nationalisierung von Fehlermeldungen beklagen, wo sie doch selbst C:\Program Files in C:\Programme umbenannt haben, finde ich schon fast spaßig. Der Bug ist in AVR Studio, da sie einerseits den Parser für die Fehlermeldungen auf eine einzige Sprache fixiert haben, andererseits aber dem Compiler nicht mitgeteilt haben (LANG=C im Environment), dass sie just diese Sprache erwarten.
@Jörg Wenn die Fehleranzeige nicht korrupt ist, woher kommt dann die Fehlerhafte Anzeige? Ich benutze nämlich Eclipse und habe auch diese kryptische Ausgabe. Aber nicht nur unter eclipse sondern auch auf der Kommandozeile. Welche Möglichkeiten habe ich um die Anzeige anzupassen. Ich kann die Ausgabe zwar auf Englisch lesen, aber in Deutsch wäre sie auch nicht schlecht. Meiner Meinung nach muss es doch an der falschen Codepage liegen. Wie kann ich diese einstellen? Ich habe die Variable LC_ALL gestestet und en_GB genommen. Dies hat aber Nichts verändert. Mit der Einstellung LANG=C kommt tatsächlich Englisch heraus, mir ist nur nicht klar wieso. Gruß Peter
Und noch etwas, wieso taucht die kryptische Ausgabe nicht in der alten Version von 2005 auf?
> Wenn die Fehleranzeige nicht korrupt ist, woher kommt dann die > Fehlerhafte Anzeige? Das aufrufende Programm möchte gern Fehlermeldungen in Englisch haben, hat aber vergessen, dass dem aufgerufenen Programm (dem GCC) mitzuteilen. Da der Aufrufer die Meldungen parsen will, muss er sich dann auch selbst drum kümmern, normalerweise sind sie ja für Menschen da. > Meiner Meinung nach muss es doch an der falschen Codepage > liegen. Sorry, mit Windows und Codepages und sowas kenne ich mich nicht aus. > Ich habe die Variable LC_ALL gestestet und en_GB genommen. Die Locales benennt leider jeder anders. Wird wohl en_EN heißen müssen oder gar en_EN.ASCII oder sowas. Einzig der Name ,,C'' ist im Standard festgelegt, den muss es immer geben und er soll die Standardsprache erzeugen.
Nun, die Erklaerung ist mir doch etwas zu einfach. Auf der Kommandozeile von Windows habe ich die gleichen Einstellungen wie das System: Also die Sprache Deutsch. Der GCC kann auch nur vom System die Sprache bekommen: Auch hier Deutsch. Also muesste auch die Ausgabe korrekt sein und nicht kryptisch, oder? Ausserdem Frage ich mich woher der gcc die Sprach-Information bekommt. Ich habe keine Umgebungsvariable (weder LANG, LC_CTYPE, LC_MESSAGES noch LC_ALL) gesetzt, also muesste er nach Beschreibung sowieso eine englische Ausgabe machen!
> Also muesste auch die > Ausgabe korrekt sein und nicht kryptisch, oder? Ich weiß nicht, was hier ,kryptisch' ist -- ich habe kein Windows und will keins haben. Wenn schon, müsstest du also genauer werden. Der Thread hat ja damit angefangen, dass AVR Studio die deutschen Fehlermeldungen nicht parsen kann und man daher nicht von der Fehlermeldung zum Quelltext kommt. Was da sonst noch schräg aussieht, entzieht sich meiner Kenntnis. > Ausserdem Frage ich mich woher der gcc die Sprach-Information > bekommt. Das weiß ich so auch nicht. Passiert wohl erst seit WinXP, kann gut sein, dass MinGW hier eine Abbildung (innerhalb der von GCC benutzten Bibliotheksfunktionen) auf den ``Windows way of doing things'' vornimmt, also höchstwahrscheinlich auf irgendeinen Registry-Eintrag.
Also zur Klarstellung: Die kryptische Ausgabe sieht z.B. so aus: ..\..\src\Design\FIO\CCS\CCS_Message.cpp:117: Fehler: »CCS_enMessage_ID« ist kein Element von »CC S_Config« Wobei das noch gut zu lesen ist. Und da du kein Windows-Experte bist kannst du dazu wohl nichts sagen, obwohl ich glaube, dass dies ein avr-gcc-Problem ist.
Das sieht mir sehr danach aus, als hätte hier einer aus Unicode-Zeichen HTML-Pseudocodes gemacht, diese dann aber innerhalb eines <pre></pre>-Tags angeordnet. Sieht das denn auf der Kommandozeile auch so aus? Ich habe hier mal folgendes leicht fehlerhaftes Progrämmchen durch den AVR-GCC mit deutscher Locale geschickt:
1 | void main(void) |
2 | {
|
3 | return 42; |
4 | }
|
Hier das Ergebnis: foo.c: In Funktion »main«: foo.c:3: Warnung: »return« mit Wert in void zurückgebender Funktion foo.c:2: Warnung: return type of »main« is not »int«
Ja, das sieht auf der Kommandozeile auch so aus. Das beispiel oben habe ich von der Kommandozeile aus kopiert. Zuerst dachte ich, es liegt an der Einstllung von Eclipse, das die Fehlermeldung so kryptisch aussieht. Da ich hier zuerst ein falsches Encding eingestellt hatte (Cp1252 anstatt ISO 8859-1). Da waren dann die deutschen Umlaute in einem anderen Editor auch nicht mehr lesbar und durch mehrere Sonderzeichen dargestellt.
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.