Forum: Compiler & IDEs Strings in .data sichtbar machen per avr-nm


von Florian (Gast)


Lesenswert?

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

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


Lesenswert?

--debug-syms

von Florian (Gast)


Lesenswert?

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

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


Lesenswert?

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.

von Andreas F. (aferber)


Lesenswert?

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
Noch kein Account? Hier anmelden.