avr-gcc Code im lss

OP #2082378
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
OP #2082434
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.
#2082436
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.
OP #2084077
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
Moderator Persönliche Seite #2084187
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.
Persönliche Seite #2084515
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 :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren