Die Analyse von Systemereignissen spielt eine wichtige Rolle bei der Echtzeit-Verarbeitung und Performance-Optimierung Neuer Debugger für die Systemanalyse

Klassische Software-Debugger decken auf, ob Quellcode so funktioniert, wie vom Programmierer beabsichtigt. Was das System sonst noch so treibt, bleibt im Dunkeln. Diese „sonstigen Aktivitäten“ wie Kontextwechsel, Interrupt-Ereignisse und Ressourcen-Verwaltung...

Die Analyse von Systemereignissen spielt eine wichtige Rolle bei der Echtzeit-Verarbeitung und Performance-Optimierung

Klassische Software-Debugger decken auf, ob Quellcode so funktioniert, wie vom Programmierer beabsichtigt. Was das System sonst noch so treibt, bleibt im Dunkeln. Diese „sonstigen Aktivitäten“ wie Kontextwechsel, Interrupt-Ereignisse und Ressourcen-Verwaltung lassen sich mit neuartigen Werkzeugen wie TraceX verfolgen, wobei gleichzeitig die Performance gesteigert werden kann.

Die meisten Echtzeit-Betriebssysteme zeichnen sich durch leistungsfähige Multitasking-Features aus, wie z.B. rasche Kontextwechsel zwischen den Threads sowie die Unterstützung zahlreicher Thread-Prioritätsebenen. Dies erleichtert die Realisierung von Echtzeit-Steuerungen, kann aber für erhebliche Komplexität sorgen, was die gemeinsame Ressourcen-Nutzung seitens der einzelnen Threads betrifft. Die Folge ist, dass Echtzeit-Applikationen häufig schwierig zu verstehen und noch schwieriger zu optimieren sind.

Das Software-Werkzeug TraceX sorgt dafür, dass Entwickler das Verhalten von Echtzeit-Systemen besser visualisieren und verstehen können. Mit TraceX lassen sich System-Ereignisse wie Interrupts oder Kontextwechsel, die sich der Beobachtung durch herkömmliche Tools entziehen, deutlich erkennen. Die so geschaffene Möglichkeit, diese Ereignisse zu studieren und ihr Timing im Kontext des Gesamtsystems zu bestimmen, befähigt die Entwickler, etwaige Bugs schneller aufzudecken und das Multitasking-Verhalten zu optimieren.

Code-Instrumentierung – aufwendig und fehleranfällig

Echtzeit-Programmierer müssen in der Entwicklungsphase das Verhalten des Systems analysieren, um die korrekte Funktionsweise zu überprüfen. Dazu instrumentierte man üblicherweise den Code mit Elementen, die Daten über das Systemverhalten generieren.

Das Instrumentieren des Code kann viel Zeit verschlingen, besonders wenn man bedenkt, dass der Instrumentierungs-Code häufig nicht auf Anhieb wie erwartet arbeitet und selbst ein Debugging erfordert. Sobald die Verifikation des fraglichen Programmteils abgeschlossen ist, muss der Debug-Code wieder entfernt werden. Auch danach ist wieder ein Debugging erforderlich. Da ein Großteil der Instrumentierung manuell erfolgt, entsteht ein erheblicher Zeitaufwand, und die Fehleranfälligkeit ist hoch.

Mit der Instrumentierung des Code ist es außerdem nicht getan, denn der Entwickler muss eine Möglichkeit zum Interpretieren der generierten Daten finden. Angesichts des schieren Umfangs der vom Instrumentierungs-Code hervorgebrachten Daten ist es für sich genommen schon eine Herausforderung, Art und Abfolge der aufgetretenen Systemereignisse zu verstehen.