Tracing – Eine Alternative zum debuggen

Posted by

Einleitung

Der nachfolgende Artikel beschäftigt sich mit der Thematik „Tracing in der Informatik“, der einen kurzen und prägnanten Über- und Einblick in den Anwendungsbereich mit Hilfe eines Beispiels geben soll. Dieses Beispiel wird dann anschließend, an Hand des BTF – Formates, anschaulich erläutert. Auch soll der Begriff des „Tracing“ näher beleuchtet werden.

Als erstes wird erklärt was unter den Begriff Tracing in der Informatik verstanden wird. Darauf folgen einige möglichen Anwendungsgebiete. Nach diesen wird ein Beispiel gezeigt und erklärt an Hand des BTF Formates.

Begriffserklärung

Das Wort Tracing kommt aus dem Englischen und bedeutet so viel wie „Verfolgung“ oder „Rückverfolgung“. In der Informatik wird unter Tracing verstanden, dass ein System während der Ausführung beobachtet wird und alle Trace relevanten Daten aufgezeichnet werden. Deshalb wird Tracing dazu verwendet, um die Informationen eines Prozesses nach der Terminierung zu erhalten und gegebenenfalls persistent zu speichern. Welche Daten relevant sind hängt davon ab welches Ziel mit dem Tracing verfolgt wird.

Anwendungsgebiete

Ein bekanntes Anwendungsgebiet sind die Embedded Systems. Einige Mikrocontroller, die in diesem Bereich eingesetzt werden, besitzen nicht die Möglichkeit zu debuggen. Daher kann auf Tracing zurückgegriffen werden, um den Mikrocontroller und seine Ausführung beobachten zu können.

Ein weiteres Anwendungsgebiet sind Programme, die bestimmte eigene Schnittstellen tracen. Ein Programm könnte seine Datenzugriffe auf die Festplatte tracen, um festzustellen, wie stark das Programm die Festplatte belastet. Ein Programm kann auch eine Kommunikationsschnittstelle, wie USB tracen, um Fehler während der Kommunikation zu erkennen.

Beispiel

Um Beispiel eines Traces darzustellen wird ein Ausschnitt aus ein BTF Trace [1] gezeigt. Hier wird kurz auf das Best Trace Format (BTF) eingegangen, bevor der Ausschnitt gezeigt wird. Ein BTF Trace besteht aus zwei Teilen eine Header-Sektion und eine Data-Sektion. In der Header-Sektion stehen Daten wie zum Beispiel Version, Ersteller und Erstellungsdatum. Diese sind weniger interessant für den Trace-Inhalt, weswegen es vernachlässigt wird. Deshalb beschäftigt sich der nachfolgende Abschnitt mit der Data-Sektion.

Der Ausschnitt:

Trace

Abbildung 1 Trace

Der Ausschnitt zeigt einen Teil von einer Data-Sektion. Jede Zeile zeigt ein einzelnes Event. Innerhalb einer Zeile ist der Inhalt durch Kommata getrennt, was dem CSV-Format entspricht. Die Zeilen sind von links nach rechts wie folgt aufgebaut:

Zeitstempel: Der Zeitpunkt, als das Event auftrat

Quelle: Der Ursprung des Events

Quellen-Instanz: Die Anzahl der Instanzen der Quelle

Typ: Der Typ des Ziels vom Event

Target: Das Ziel des Events

Target-Instanz: Die Anzahl der Instanzen des Ziels

Event: Name des Events

Note: Zusätzliche Information (Optional und kommen im Ausschnitt nicht vor)

Durch den Trace kann dann folgender Gantt Chart entwickelt werden:

Gantt

Abbildung 2 Gantt

Das Gantt Chart zeigt zwei Tasks, Task_A und Task_B. Diese beiden Tasks werden auf dem Kern Core_1 ausgeführt. Der Task_A besitzt zwei Runnables, Runnable_A_1 und Runnable_A_2. Der Task_B besitzt die Runnable_B_1. Folgende Beschreibung ist nur eine vereinfachte Darstellung, da in diesen Artikel tieferliegende Konzepte nicht behandelt werden.

Als erstes wird Task_A durch den Kern verarbeitet. Task_A startet erst die Runnable_A_1, diese Runnable wird solange ausgeführt bis diese terminiert. Danach wird Runnable_A_2 gestartet. Allerdings wird die Runnable_A_2 während der Berechnung, vom Task_B, unterbrochen. Task_B startet dann die Runnable_B_2. Diese wird dann bis zur Terminierung ausgeführt. Darauf folgend wird Task_A weiter verarbeitet, da Task_B keine weiteren Runnables besitzt. Die Runnable_A_2 von Task_A wird ebenfalls bis zur Terminierung bearbeitet.

Falls ihr nach dem Lesen des Artikels noch Fragen, Kritiken oder Anregungen habt, schreibt uns diese bitte in die Kommentare.

Quellen:

[1] Timing Architects, 10 4 2014. [Online]. Available: https://wiki.eclipse.org/images/e/e6/TA_BTF_Specification_2.1.3_Eclipse_Auto_IWG.pdf. [Zugriff am 18 12 2015].

 

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *


*