Hallo! Angenommen ich verwende auf dem AVR printf("foo") statt printf_P(PSTR("foo")), dann wird der const char* ja im Flash ablegt, dann aber von der startup-Routine in die .data-Sektion kopiert (die im SRAM liegt). Wenn ich mir das mit avr-size ansehe, sehe ich da auch den entsprechenden Verbauch. Gibt es eine Möglichkeit, diesen (anonymen) .data-Symbolen Pseudo-Symbole zuweisen zu lassen, sodass ich die hinterher mit avr-nm sehe? Ich sehe nämlich so zwar per avr-size die Gesamtgröße, aber nicht die einzelnen Symbole und deren Verbauch. Interessant wäre z.B. ein konkatenierter String _autosymbol_UNIT_LINE_NNN (bei der UNIT die Übersetzungseinheit anzeigt und LINE die Zeilennummer, ggf NNN falls mehrere Symbole pro Zeile erzeugt wurden). Geht das? Gruss --- Florian
Hi Jörg, irgendwie tut das nicht so wie ich mir das vorstelle - zwar zeigt avr-nm mehr Symbole an, wenn ich --debug-syms aktiviere, aber diese sind z.B. die Namen der Übersetzungseinheiten (alle mit "a 00000000"), sowie .stab N 00000000 .stabstr N 00000000 .text t 00000000 Darüberhinaus noch .data und .bss (was tatsächlich nützlich ist), z.B.: .bss b 00802332 Aber eine Aufschlüsselung, worauf sich die 0x332 = 818 Bytes der .data-Region aufteilen bekomme ich so auch nicht. Gruß --- Florian
Ja, ich hatte das mit den durch PSTR generierten Symbolen verwechselt, die bekommen einen Namen. Die .data-Symbole haben keinerlei Debug- Information, davon übernimmt der Assembler keinerlei symbolische Information in die Objektdatei. Es existieren lediglich zwischendurch relocation records, aber die sind nach dem Linken natürlich weg.
Einen gewissen Anhaltspunkt kann evtl. avr-strings liefern. Per Default durchsucht strings nur die data-Section, wenn ein Objekt-Dateiformat erkannt wird, deshalb werden dir andere Strings (z.B. in den Debuginfos oder im Flash) nicht mit angezeigt. Das Non-Plus-Ultra ist das natürlich nicht, da man damit nur den Inhalt der Strings sieht, aber nicht, von woher im Code die stammen. Andreas
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.