Integrierte Entwicklungsumgebung

Integrierte Entwicklungsumgebung

Linux-Entwicklung mit freien Werkzeugen

Software wird zunehmend komplexer und stellt somit auch immer mehr Anforderungen an den Entwicklungsprozess. Eine flexible und umfangreiche Entwicklungsumgebung ist daher ein Muss. Immer mehr Software im Embedded-Umfeld läuft unter Linux. Als industrietaugliches Embedded-Betriebssystem hat es sich in den letzten Jahren durchgesetzt und in rasantem Tempo große Marktanteile erobert. Die Fragestellung lautet inzwischen nicht mehr: „Kann Linux im industriellen Umfeld verwendet werden?“ sondern vielmehr: „Wie kann für Linux entwickelt werden?“

 (Bild: Linutronix GmbH)

(Bild: Linutronix GmbH)


Linux selbst bietet von Hause aus mächtige Werkzeuge, wie eine Tracing-Infrastruktur, mit der Entwickler jeden Vorgang im Betriebssystem nahezu ohne zeitliche Beeinflussung beobachten können. Doch wie kann der Applikationsentwickler von diesen Werkzeugen profitieren und wie können all diese Funktionalitäten in eine Entwicklungsumgebung integriert werden? Egal ob kommerzieller oder freier Ansatz – die Basis für eine integrierte Entwicklungsumgebung im Linux-Umfeld bildet in der Regel die integrierte Entwicklungsumgebung Eclipse. Insbesondere die frei verfügbaren Werkzeuge wurden in den letzten Jahren weiterentwickelt und bieten bereits vieles, was für die Entwicklung erforderlich und nützlich ist: Insbesondere das CDT Plug-In, eine Eclipse Erweiterung für C und C++ Entwicklung, wurde in seinem Funktionsumfang stark erweitert: Syntaxhighlighting, Textvervollständigung, Cross Compiling und Remote Debugging sind nur einige der Funktionen, die dieses Plug-In aktuell bietet. Insbesondere das Remote Debugging ist eine wichtige Anforderung an die Entwicklungsumgebung. Denn, anders als bei der Entwicklung für den Desktop-Sektor, erstellen Entwickler Software für industrielle Umgebungen nicht auf dem Zielsystem. Das heißt, bei der Fehlersuche gilt es Software zu untersuchen, die auf dem Zielsystem und somit auf einem anderen Rechner mit unterschiedlichen Randbedingungen und möglicherweise sogar auf einer anderen CPU-Architektur läuft. Diesen Anforderungen wird der sogenannte Remote System Explorer (RSE) gerecht. Dieser Bestandteil des CDT Plug-Ins ermöglicht das Verwalten von unterschiedlichen Zielsystemen. Für jedes System wird eine Verbindungsdefinition erstellt, die aussagt, über welches Protokoll mit dem Zielsystem kommuniziert wird, wie Daten auf das Zielsystem gelangen und wie das System per Netzwerk erreicht wird. Diese Erweiterung ermöglicht nicht nur das Remote Debugging, sondern integriert die Zielplattform so weit in die IDE, dass sie remote bedient werden kann. Dazu gehört das Starten und Stoppen von Prozessen, Anzeigen von Prozessen, senden von Signalen und Kopieren.
Remote System Explorer (Bild: Linutronix GmbH)

Remote System Explorer (Bild: Linutronix GmbH)

Entwickeln auf Windows und Linux

Diese Funktionen sind nicht abhängig von der Verfügbarkeit bestimmter Werkzeuge auf dem Entwicklungssystem, sondern Bestandteil des Plug-Ins, d.h. egal ob Programmierer auf Linux oder auf Windows entwickeln. Zudem erübrigt sich das Installieren spezieller Software; es genügt ein Download des aktuellen Eclipse Releases (in der Version für C und C++ Entwicklung) von eclipse.org. Die einzige Abhängigkeit an das Entwicklungssystem ist eine geeignete Cross-Toolchain für das Target. Hierfür existieren viele freie Varianten wie die Toolchains von Linaro für die ARM-Plattform. Diese sind sowohl für Linux- als auch für Windows basierte Hostsysteme verfügbar.

CDT-Debug-Perspektive (Bild: Linutronix GmbH)

CDT-Debug-Perspektive (Bild: Linutronix GmbH)

Tracing-Funktionen im Betriebssystem

Gilt es zusätzlich zum Applikationsverhalten komplexere Vorgänge im Betriebssystem zu beobachten, kommt die Linux Tracinginfrastruktur (Ftrace) ins Spiel. Dieser feste Bestandteil von Linux ist auf allen gängigen CPU-Architekturen nutzbar. Die Infrastruktur lässt sich ohne spezielle Werkzeuge bedienen, allerdings zeigt sich gerade bei komplexen Vorgängen eine grafische Aufbereitung der Daten als sehr hilfreich. Auch hierfür existieren freie Werkzeuge, die die erforderlichen Funktionen zur Verfügung stellen. Nachteil dieser Technologie ist, dass Anwender nicht das Ftrace-Format, sondern lediglich das sogenannte Common Trace Format (CTF) visualisieren kann. Dies war lange Zeit der Grund für eine große Lücke im Ecosystem der Linux IDEs. Mit einem Werkzeug von Linutronix lässt sich diese Lücke nun schließen: Das Unternehmen stellt einen Konverter bereit, mit dem Standard Linux Traces in das Common Tracing-Format übersetzt und somit erlaubt, diese mit den freien Eclipse Plug-Ins grafisch auszuwerten. Der Konverter beschränkt sich dabei nicht nur auf das Tracing sondern interpretiert sogenannte PERF-Daten. Diese Linux-Infrastruktur dient der Analyse und Auswertung von Performance-Daten, unter Nutzung der in aktuellen CPUs verfügbaren Funktionen zur Performance-Analyse. Diese Performance-Infrastruktur ermöglicht auch den Zugriff auf die wichtigen Tracing-Funktionen im Betriebssystem, also der Verfolgung der Programmabläufe. Somit können jetzt über eine Schnittstelle alle wichtigen Betriebssystemdaten gesammelt und mithilfe des Konverters mit den Eclipse Plug-Ins ausgewertet werden. Die grafischen Auswertemöglichkeiten umfassen u.a. die Darstellung des Scheduling-Verhaltens, die statistische Auswertung von Ereignissen und die Darstellung der Rechenlast über den Zeitraum der Trace-Aufzeichnung. Weiterhin besteht die Möglichkeit, eigene Parser zum Auswerten von Tracedaten zu hinterlegen, um automatisiert nach bestimmten Ereignissen zu suchen. Mit den sogenannten Uprobes lassen sich neben den Betriebssystem-Events dynamische Trace-Punkte in die Applikation integrieren. Diese sind ebenfalls Bestandteil der Ftrace-Infrastruktur und lassen sich u.a. über das Performance-Subsystem (PERF) definieren. Somit können Entwickler auch diese Ereignisse grafisch über das Eclipse Plug-In auswerten. Besonders interessant kann dies beim Debuggen von Echtzeitapplikationen sein. Wenn eine solche Applikation im Debugger ausgeführt wird, ändert sich Ihr Zeitverhalten, zum Teil erheblich. Dies muss man vermeiden, wenn man wissen will, was wirklich vorgeht. Und genau hier helfen die uprobes (dynamische Tracepunkte), denn sie haben keinerlei Einfluss auf das Verhalten des Programms.

Seiten: 1 2Auf einer Seite lesen

Linutronix GmbH
www.linutronix.de

Das könnte Sie auch Interessieren