Linux-Debugger für C++ und Fortran mit grafischer Oberfläche

veröffentlicht von am 13. Juli 2009

Es soll ja Leute geben, die (a) nicht viel von grafisch basierten Oberflächen halten und (b) nicht wissen, dass die Intel-Linux-Compiler für C/C++ und Fortran einen solchen GUI-Debugger mitbringen. Dieselben konnte ich mir vorletzte Woche während meines Besuchs bei Intel in Ulm ansehen und mir ein Bild von ihren Fähigkeiten machen. Und das kam dabei heraus (mehr dazu folgt noch diese Woche mit weiteren Details und ein paar interessanten Bildern).

Das absolute Highlight des GUI-basierten Linux-Debuggers von Intel ist die Möglichkeit, einzelne Breakpoints zu setzen, zu speichern und bei Bedarf das so markierte Projekt wieder aufzurufen. Das ist vor allem dann hilfreich, wenn sich die Umgebungsentwicklung mal verabschieden sollte oder man andere Dinge zwischendurch zu tun hat, bevor man sich wieder dem Debuggen zuwendet. Ein Breakpoint wird dank der grafischen Bedieneroberfläche per doppeltem Mausklick erzeugt – und genauso schnell wieder entfernt. Das macht das Testen von C/C++ und Fortran-Projekten wirklich sehr komfortabel.

Aber auch das Testen parallel programmierter Projekte unter Linux geschieht mit dem Debugger von Intel recht überzeugend. So kann man in Echtzeit eine komplette Anwendung (oder Teile davon) auf mögliche Data Races hin untersuchen. Genau genommen identifiziert der Debugger Szenarien, in denen es zu gemeinsamen Datenzugriffen kommen kann, was vor allem das konkurrierende Speichern zweier Threads betrifft. Der Programmierer oder Entwickler muss dann selbst entscheiden, ob dieser parallele Schreibzugriff gewollt ist oder im schlimmsten Fall einen Absturz der Anwendung zur Folge haben kann.

Das Aufspüren von potenziellen Data Races kann übrigens ohne Breakpoint erfolgen. In diesem Fall muss man im Debugger die Option “Stop on Event” einstellen, und schon hält das Programm genau an der Stelle an, wo der “Crash” erfolgt. Zur schnellen Fehlerfindung wird die verursachende Stelle im Quellcode angezeigt. Dies können einzelne Adressen sein, aber auch vollständige Funktionen im Sourcecode.

Neben der klassischen Programmierung unterstützt der Linux-Debugger von Intel auch OpenMP, was immer öfter bei der parallelen Programmierung eingesetzt wird. In diesem Fall geht es vor allem um ein Überwachen des Threadpools: Sind sämtliche Threads, die sich dort befinden, thread-sicher und wenn nicht, an welchen Stellen kann es zu Data Races kommen?

Ach ja: Ein wichtiger Tipp beim parallelen Programmieren lautet: Denke von Anfang an parallel, entwerfe parallel, programmiere aber zuerst seriell. Dies stellt sicher, dass der sequentielle Quellcode fehlerfrei läuft und sich anschließend die parallelen Konstrukte einbauen lassen – beispielsweise mithilfe von OpenMP. In diesem Fall müssen für das serielle Debuggen nicht sämtliche OpenMP-Pragmas entfernt oder deaktiviert werden. Der Debugger führt nämlich die parallelen Konstrukte auf einem einzigen Thread aus, so als ob es sich um eine Single-Core-Maschine handeln würde.


Kategorien : Multicore Tags : , ,

Kommentare

Keine Kommentare vorhanden.


Beitrag kommentieren.

Sie müssen angemeldet sein um diesen Beitrag zu kommentieren. [Login | Registrieren]

(erforderlich)

(erforderlich)