www.mikrocontroller.net

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


Autor: Sascha (Gast)
Datum:

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

Autor: Peter Fleury (Gast)
Datum:

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

Autor: Sascha (Gast)
Datum:

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

Gruss
Sascha

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

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

Autor: Peter Seehaus (Gast)
Datum:

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

Autor: Peter Seehaus (Gast)
Datum:

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

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

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

Autor: Peter Seehaus (Gast)
Datum:

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

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

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

Autor: Peter Seehaus (Gast)
Datum:

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

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

Bewertung
0 lesenswert
nicht 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:
void main(void)
{
        return 42;
}
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«

Autor: Peter Seehaus (Gast)
Datum:

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

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.