Forum: Compiler & IDEs AVR Studio: Kein Link zw. Fehlermeldung und Quelltext


von Sascha (Gast)


Lesenswert?

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

von Peter Fleury (Gast)


Lesenswert?

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.

von Sascha (Gast)


Lesenswert?

Besten Dank nochmal! Funktioniert nun!
...muss ja klappen, wenn der Meister persönlich antwortet.

Gruss
Sascha

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


Lesenswert?

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.

von Peter Seehaus (Gast)


Lesenswert?

@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

von Peter Seehaus (Gast)


Lesenswert?

Und noch etwas, wieso taucht die kryptische Ausgabe nicht in der alten
Version von 2005 auf?

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


Lesenswert?

> 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.

von Peter Seehaus (Gast)


Lesenswert?

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!

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


Lesenswert?

> 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.

von Peter Seehaus (Gast)


Lesenswert?

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.

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


Lesenswert?

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«

von Peter Seehaus (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.