14.01.2015 Aufrufe

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

4.2 Modularisierung<br />

Positionen Weiterh<strong>in</strong> ist die Position jedes Elements <strong>in</strong> den Debug<strong>in</strong>formationen gespeichert. Die Position<br />

kann dabei als Ort <strong>in</strong>nerhalb der B<strong>in</strong>ärdatei angegeben se<strong>in</strong> oder als Adresse im laufenden<br />

Programm. Im ersten Fall müssen die Angaben entsprechend der Abbildung der b<strong>in</strong>ären Daten<br />

<strong>in</strong> den Speicher umgerechnet werden, um sie zur Fehlersuche zu benutzen. Im heute üblicheren<br />

zweiten Fall trägt der B<strong>in</strong>der die Position über e<strong>in</strong>en E<strong>in</strong>trag <strong>in</strong> der Relokationstabelle <strong>in</strong> die<br />

Debug<strong>in</strong>formationen e<strong>in</strong>. Das bedeutet jedoch, dass auch die Debug<strong>in</strong>formationen erst gebunden<br />

werden müssen, bevor sie gültige Adressen enthalten.<br />

Größe Um Elemente anhand ihrer Adresse zu bestimmen, enthalten Debug<strong>in</strong>formationen neben der Position<br />

auch die Größe der Elemente. Diese Information ist zwar auch <strong>in</strong> den Symbol<strong>in</strong>formationen<br />

e<strong>in</strong>iger B<strong>in</strong>ärformate gespeichert, aber nicht <strong>in</strong> allen und nicht für alle Elemente.<br />

Typ<strong>in</strong>formationen Um den Typ von Variablen und Funktionsparametern zu beschreiben, enthalten<br />

Debug<strong>in</strong>formationen oft Typbeschreibungen. Zur Fehlersuche s<strong>in</strong>d diese Informationen hilfreich,<br />

um sich beispielsweise den Inhalt e<strong>in</strong>er Variablen darstellen zu lassen. Zur Unterstützung komplexer,<br />

zusammengesetzter Datentypen, wie zum Beispiel Strukturen, ist e<strong>in</strong>e genaue Beschreibung<br />

der enthaltenen Elemente notwendig. Für jedes Element müssen neben dem Namen auch die<br />

Position und die Größe <strong>in</strong>nerhalb des Datentyps beschrieben werden.<br />

Variablen und Funktionen Mithilfe der beschriebenen Attribute werden <strong>in</strong> den Debug<strong>in</strong>formationen<br />

die Elemente e<strong>in</strong>er Objektdatei beschrieben. Variablen können mit ihrem Namen, der Position,<br />

der Größe und e<strong>in</strong>em Typ beschrieben werden. Zu Funktionen kann die Signatur angegeben<br />

werden, das heißt der Name der Funktion, der Typ des Rückgabewertes und die Anzahl, Namen<br />

und Typen der Parameter. Bei manchen Debug<strong>in</strong>formationen ist auch die Position der Parameter<br />

gegeben.<br />

4.2.6.1 Debug<strong>in</strong>formationsformate<br />

Im Folgenden sollen e<strong>in</strong>ige wichtige Formate zur Speicherung von Debug<strong>in</strong>formationen vorgestellt<br />

werden.<br />

stabs<br />

Die stabs-Debug<strong>in</strong>formationen [MKM06] wurden ursprünglich entwickelt, um dem a.out-B<strong>in</strong>ärformat<br />

Informationen zur Fehlersuche h<strong>in</strong>zuzufügen. Da a.out nicht die Möglichkeit bietet, beliebige Zusatz<strong>in</strong>formationen<br />

abzuspeichern, werden die Informationen als Texte<strong>in</strong>träge <strong>in</strong> der Symboltabelle abgelegt.<br />

Daher stammt auch der Name stabs, als Abkürzung für symbol table str<strong>in</strong>gs.<br />

Das stabs-Format war, vor allem auf UNIX-Systemen, sehr weit verbreitet, da es durch die Art<br />

der Speicherung mit fast jedem B<strong>in</strong>ärformat zusammen verwendet werden kann. Das stabs-Format<br />

war ursprünglich sehr e<strong>in</strong>fach, wurde jedoch mehrfach <strong>in</strong> verschiedener Weise erweitert und ist<br />

heute sogar relativ komplex. Neben Zeilennummer<strong>in</strong>formationen können Typen und Parameter von<br />

Funktionen beschrieben werden. Spezielle stabs-Versionen unterstützen sogar die Besonderheiten von<br />

objektorientierten Programmen.<br />

Durch die verschiedenen Erweiterungen entstanden jedoch e<strong>in</strong>e ganze Reihe von zue<strong>in</strong>ander <strong>in</strong>kompatiblen<br />

Versionen des stabs-Formats. Die fehlende Spezifikation und die Möglichkeit, <strong>in</strong> modernen<br />

B<strong>in</strong>ärformaten benutzerdef<strong>in</strong>ierte zusätzliche Daten zu speichern, s<strong>in</strong>d die Hauptgründe dafür, dass<br />

stabs heute oft durch DWARF ersetzt wird.<br />

57

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!