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
Dieses lss-File wird mit folgendem Kommando erstellt:
1 | avr-objdump -h -S elf-File |
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
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 |
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.
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.
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
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.
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 :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.