Elektroniknet Logo

Multithreaded-Embedded-Code

5 Tipps gegen die »dunkle Seite« von Software

Fehler in komplexr Software für Multithread-Anwendung ist mühevoll. Leistungsfähige Werkzeuge bieten wirkungsvolle Unterstützung bei methodischen Einsatz
© Wright Studio | Shutterstock

Fehler in Software zu lokalisieren kann zeitaufwendig und mühevoll sein, insbesondere in komplexer Software für Multithread-Anwendungen. Hier bieten leistungsfähige Werkzeuge eine wirkungsvolle Unterstützung – wenn sie methodisch richtig eingesetzt werden.

Um schneller mit qualitativ hochwertigen Produkten auf den Markt kommen zu können, brauchen Unternehmen tieferen Einblick in die »dunkle Seite des Codes«, also das tatsächliche Verhalten der gesamten Software eines Systems.

Zwischen dem erwünschten und dem tatsächlichen Verhalten können enorme Unterschiede bestehen, die sich nicht aus dem Quellcode ablesen lassen und mit Funktionstests nur schwierig aufzudecken sind. Sobald Anwendungen an Komplexität gewinnen, wächst die Herausforderung für Entwickler von Multithreaded-Embedded-Software, die auf einem RTOS oder einem Linux-Kernel läuft.

Nachfolgend werden fünf bewährte Maßnahmen beschrieben, mit denen sich mehr Einblick in das Echtzeitverhalten auf der Systemebene gewinnen lässt, um die Produktqualität zu steigern und die Entwicklung zu beschleunigen.

1. Visuelle Zeitleiste zur Fehlererkennung

Softwarefehler, die beim Ausführen von Multithreaded-Software auftreten, sind oft schwer zu beheben. Zum Glück lassen sich Probleme und Unklarheiten durch bessere Einblicke während des Debuggings reduzieren.

Relevante Anbieter

Die Darstellung der Softwareausführung in einer Zeitleiste erleichtert Entwicklern die Fehlersuche
Die Darstellung der Softwareausführung in einer Zeitleiste erleichtert Entwicklern die Fehlersuche.
© Percepio

Diese erleichtern zudem das Aufdecken der Ursachen, sodass die Fehler ordnungsgemäß behoben werden können und das Debugging weniger Zeit beansprucht. Die Möglichkeit, sich die Ausführung der Software auf einer visuellen Zeitleiste (Bild rechts) anzeigen zu lassen, ist in vielen Szenarien hilfreich – unter anderem dann, wenn sich anhand der ursprünglichen Symptome nicht bestimmen lässt, wo genau der Fehler zu lokalisieren ist. Oder wenn das Problem schwierig zu reproduzieren ist. Oder wenn die Verwendung traditioneller Debugging-Tools ausscheidet, da diese die Verarbeitung unterbrechen würden.

Wie steht es mit dem Debugging per »printf«? Die althergebrachte Praxis, zu Debugging-Zwecken Print-Anweisungen in den Applikationscode einzufügen, ist riskant, intrusiv und nicht auf komplexere Applikationen und schnellere Prozessoren skalierbar. Die printf-Funktion ist nicht für diesen Zweck gedacht und mit mehreren Millisekunden pro Nachricht meist auch recht langsam. Im Gegensatz dazu stützt sich die visuelle Trace-Diagnose auf optimierte Methoden für das Software-Tracing und ist etwa 100-mal schneller als printf-Aufrufe, sodass ohne spürbare Auswirkungen wesentlich mehr Informationen erfasst werden können. Hinzu kommt, dass es mit Datenvisualisierungstechniken ein Leichtes ist, Software-Traces in aussagefähige Erkenntnisse zu übertragen.

2. Systemtests überwachen, für schwer greifbare Probleme

Das fortlaufende Live-Streaming von Trace-Daten gibt Entwicklern die Möglichkeit, über lange Zeitspannen hinweg ein vollständiges Bild der Software aufzuzeichnen und zu visualisieren.

Mit der kontinuierlichen Aufzeichnung von Trace-Daten lassen sich Fehler in der Software lokalisieren, die nur sporadisch auftreten oder schwer zu reproduzieren sind
Mit der kontinuierlichen Aufzeichnung von Trace-Daten lassen sich Fehler in der Software lokalisieren, die nur sporadisch auftreten oder schwer zu reproduzieren sind.
© Shutterstock

Damit können schwer fassbare Softwarefehler aufgedeckt werden, die sonst schwierig zu reproduzieren und zu beseitigen sind. Auf diese Weise lassen sich etwaige Unstimmigkeiten in den Trace-Aufzeichnungen erfassen und ihre Ursachen ermitteln. Ebenso lässt sich herausfinden, weshalb ein System nach einem mehrstündigen Stresstest abstürzt. Die visuelle Trace-Diagnose mit Percepio Tracealyzer bietet zum Beispiel die Möglichkeit, live eine animierte Ansicht des Laufzeitsystems zu sehen, Anomalien in den abstrakten visuellen Darstellungen und Statistiken zu erkennen und sich daraufhin zu den jeweiligen Ereignissen vorzuarbeiten, um genau zu ermitteln, was passiert ist.


  1. 5 Tipps gegen die »dunkle Seite« von Software
  2. 3. Softwareentwicklung verbessern

Verwandte Artikel

Percepio AB