www.mikrocontroller.net

Forum: Compiler & IDEs avr-gcc Code im lss


Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

wenn man im AVR-Studio ein Projekt erstellt undkompiliert, dann findet 
man im Listing auch den C-Code als Kommentar wieder.

Im Eclipse mit AVR-Plugin ist das leider nicht der Fall.
Weiß jemand welche optionen für die Ausgabe des codes verantwortlich 
sind oder noch besser, wo ich das genau in den Projekt-Settings im 
Eclipse-Projekt umstellen muss?


Danke
Vlad

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieses lss-File wird mit folgendem Kommando erstellt:
avr-objdump -h -S elf-File

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Ernst schrieb:
> avr-objdump -h -S elf-File

Das ist mir klar, aber was muss man machen, dass der c-Code da mit 
drinsteht

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vlad Tepesch schrieb:
> Stefan Ernst schrieb:
>> avr-objdump -h -S elf-File
>
> Das ist mir klar, aber was muss man machen, dass der c-Code da mit
> drinsteht

Wenn dir das klar ist, dann solltest du doch eigentlich auch wissen, 
dass dafür das -S in der Zeile zuständig ist:
  -S, --source             Intermix source code with disassembly

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Ernst schrieb:
> Wenn dir das klar ist, dann solltest du doch eigentlich auch wissen,
> dass dafür das -S in der Zeile zuständig ist:  -S, --source             Intermix 
source code with disassembly

Das wusste ich nicht.
Ich hab nur aus den Makefiles rausgelesen, dass objdump für das Erzeugen 
des lss zuständig ist.

Das steht aber auch in beiden Makefiles drin (in dem vom Studio und in 
dem vom Eclipse)
Es wird ja auch immer eins generiert.
Nur im vom Eclipse-geneierten Makefile erzeugen lss steht kein Code 
drin.

Wahrscheinlich fehlen in den Stufen davor irgendwelche Parameter.
Der Code muss doch in dem Elf-File eingebettet sein, damit objdump den 
rausholen kann.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vlad Tepesch schrieb:
> Der Code muss doch in dem Elf-File eingebettet sein, damit objdump den
> rausholen kann.

Nein, im ELF-File steht nie der Source-Code. Dort stehen nur 
entsprechende Verweise (Debug-Infos) drin. Mit denen holt sich objdump 
den Code dann aus den Source-Files. Es könnte also sein, dass entweder 
beim Übersetzen keine Debug-Infos hinzugefügt werden, oder dass die 
Source-Files nicht mehr an ihrem ursprünglichen Platz (wo sie beim 
Übersetzen standen) zu finden sind.

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Ernst schrieb:
> Nein, im ELF-File steht nie der Source-Code. Dort stehen nur
> entsprechende Verweise (Debug-Infos) drin. Mit denen holt sich objdump
> den Code dann aus den Source-Files.
Ah, ok.

> Es könnte also sein, dass entweder
> beim Übersetzen keine Debug-Infos hinzugefügt werden,
was müsste man denn dann wo einstellen?
es gibt verscheidenste Stellen, wo etwas mit Debug-Infos zu 
konfigurieren ist.
welches Format müsste man denn nehmen?
aus dem Avr-Studio-Projekt konnte ich das nicht rauslesen und Makefiles 
sind nicht ganz so mein Metier.
ich hab da was mit "-gdwarf-2" gefunden
das habe ich testweise mal im Eclipse bei allen Optionen eingestellt, wo 
es ging, aber Code ist deswegen trotzdem nicht im lss zu finden.

> oder dass die
> Source-Files nicht mehr an ihrem ursprünglichen Platz (wo sie beim
> Übersetzen standen) zu finden sind.
die wurden nicht verändert

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

Bewertung
0 lesenswert
nicht lesenswert
Vlad Tepesch schrieb:
> ich hab da was mit "-gdwarf-2" gefunden

-gstabs

Aber versprich dir nicht zu viel davon.  Dadurch, dass das erst beim
Disassemblieren wieder reingedröselt wird, ist (für meine Begriffe)
die Korrelation so miserabel, dass das Ganze mehr Verwirrung als
Nutzen stiftet.  Am Ende führt das dazu, dass die Leute die
Optimierung abschalten, damit der Assemblercode wieder streng linear
dem C-Code folgt, und damit aber eine völlig andere Applikation
debuggen als die, um die es eigentlich geht.

Wenn ich mich dafür interessiere, was der Compiler so draus gemacht
hat, dann lasse ich mir meist lieber vom Compiler eine Assemblerdatei
ausgeben (Option -S statt -c) und schau mir diese an.

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch schrieb:

> Wenn ich mich dafür interessiere, was der Compiler so draus gemacht
> hat, dann lasse ich mir meist lieber vom Compiler eine Assemblerdatei
> ausgeben (Option -S statt -c) und schau mir diese an.

Oder das -c lassen wie gewohnt und zusätzlich -save-temps (gibt .s und 
.i Dateien). Zusätzlich noch -fverbose-asm und man hat auch Zuordnung zu 
Variablennamen. Und am besten ohne Degug-Info übersetzten, also ohne 
-g. Das erzeugt nämlich für menschliche Leser nur viel Geraffel, mit dem 
man nix anfangen kann :-)

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke euch.

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.