Forum: Compiler & IDEs avr-gcc Code im lss


von Vlad T. (vlad_tepesch)


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

von Stefan E. (sternst)


Lesenswert?

Dieses lss-File wird mit folgendem Kommando erstellt:
1
avr-objdump -h -S elf-File

von Vlad T. (vlad_tepesch)


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

von Stefan E. (sternst)


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:
1
  -S, --source             Intermix source code with disassembly

von Vlad T. (vlad_tepesch)


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.

von Stefan E. (sternst)


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.

von Vlad T. (vlad_tepesch)


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

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


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.

von Johann L. (gjlayde) Benutzerseite


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 :-)

von Vlad T. (vlad_tepesch)


Lesenswert?

Danke euch.

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.