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 Basisschicht e<strong>in</strong>es Verwalters<br />

Abbildung 4.9: Eigene Sektionen für jede Funktion<br />

Dieses Mal wurde das e<strong>in</strong>fache Beispiel aus Abbildung 4.3 mit der Option -ffunction-sections übersetzt.<br />

Man erkennt, dass der Compiler für jede Funktion e<strong>in</strong>e eigene Sektion erstellt hat. Wendet man nun das Verfahren<br />

aus Abschnitt 4.2.5 an und erzeugt aus jeder Sektion e<strong>in</strong> Modul, so erhält man Module, die genau e<strong>in</strong>er Funktion<br />

entsprechen.<br />

die automatische Aufteilung <strong>in</strong> e<strong>in</strong>zelne Sektionen unterstützt, so ist dieser Weg dem ersten vorzuziehen,<br />

da er ke<strong>in</strong>en zusätzlichen Aufwand verursacht.<br />

Zur Modularisierung der Datensektion s<strong>in</strong>d beide Verfahren als gleichwertig anzusehen. Um die<br />

e<strong>in</strong>zelnen Daten jedoch auch ohne zusätzliche Informationen zu identifizieren, wird ebenfalls das<br />

zweite Verfahren bevorzugt.<br />

Abschließend ist festzuhalten, dass es durch das vorgestellte Verfahren möglich ist, Module aus b<strong>in</strong>ären<br />

Objektdateien zu extrahieren, ohne zusätzlich manuell Informationen anzugeben. Alle benötigten<br />

Informationen können automatisch im Rahmen des Übersetzungsvorganges erzeugt werden.<br />

4.2.6 Debug<strong>in</strong>formationen<br />

Neben den Meta<strong>in</strong>formationen, die <strong>in</strong> den Objektdateien zum B<strong>in</strong>den vorhanden s<strong>in</strong>d, stellen Debug<strong>in</strong>formationen<br />

e<strong>in</strong>e weitere Informationsquelle dar. Sie s<strong>in</strong>d besonders für das entfernte Ausführen<br />

<strong>in</strong>teressant, da sie die vorhandenen Funktionen <strong>in</strong> der Objektdatei beschreiben und somit Informationen<br />

über die Schnittstellen von Modulen zur Verfügung stellen. Hierbei s<strong>in</strong>d <strong>in</strong>sbesondere die Typen der<br />

erwarteten Parameter von Bedeutung. Falls es sich nicht um e<strong>in</strong>fache Standardtypen handelt, ist auch<br />

Wissen über den Aufbau und die Zusammensetzung der Typen notwendig.<br />

Bevor wir verschiedene Debugformate vorstellen, betrachten wir zunächst die Informationen, die<br />

enthalten se<strong>in</strong> können.<br />

Zeilennummern<strong>in</strong>formationen Da Debug<strong>in</strong>formationen primär zum Auff<strong>in</strong>den von Fehlern gedacht<br />

s<strong>in</strong>d, enthalten alle Formate Informationen, um dem B<strong>in</strong>ärcode e<strong>in</strong>zelne Zeilen des Quellcodes<br />

zuzuordnen. Bei der Verwendung e<strong>in</strong>er Sprache, die zunächst <strong>in</strong> e<strong>in</strong>en Zwischencode überführt<br />

wird, wie zum Beispiel Java, kann die Abbildung von B<strong>in</strong>ärcode auf Quellcode auch zweistufig<br />

erfolgen (B<strong>in</strong>ärcode →Java-Bytecode →Java-Quellcode).<br />

Namen E<strong>in</strong>e wichtige Information zum Identifizieren von Elementen ist der Name. Bei manchen<br />

B<strong>in</strong>ärformaten ist der Name <strong>in</strong> den Symbol<strong>in</strong>formationen gespeichert. Der Symbolnamen entspricht<br />

jedoch nicht immer dem Namen des Elements, e<strong>in</strong> Beispiel s<strong>in</strong>d die um die Signatur<br />

angereicherten Symbolnamen bei der Übersetzung von C++ Code. E<strong>in</strong>ige Debug<strong>in</strong>formationen<br />

enthalten daher zusätzlich den Namen von Funktionen und Variablen.<br />

56

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!