Mozilla stellt neuen C/C++-Debugger für Firefox vor

Nichtdeterministische Ausführungen eines Programms aufzeichen und es im Anschluss deterministisch debuggen – dieses Ziel verfolgt Mozillas rr-Projekt. Die Version 1.0 des C/C++-Debuggers lässt sich ab sofort ausprobieren.

 –  15 Kommentare
Anzeige

Mozillas Robert O'Callahan hat in einem Blogeintrag rr, ein Debugging-Tool für C/C++-Anwendungen unter Linux, vorgestellt. Der Name des für die Firefox-Entwicklung erstellten Werkzeugs steht für Record (aufzeichnen) und Replay (wiedergeben), was seine Hauptfunktionen weitgehend zusammenfasst. Während des Entstehungsprozesses legten die Programmierer besonderen Wert auf Punkte wie Deployability und einen niedrigen Overhead zur Laufzeit.

rr zeichnet einen Linux-Prozess-Baum aus, also einen Ausgangsprozess samt der von ihm angestoßenen Threads und Unterprozesse, und ermöglicht es im Anschluss, diesen erneut zu durchlaufen und dabei zu debuggen. Der Inhalt der Speicher und Register während dieser Wiederholung entspricht denen des Aufzeichnungsdurchgangs. Für die Fehlerbeseitigung stellt rr eine gdbserver-Schnittstelle zur Verfügung, um den Debugger des GNU-Projekts zum Untersuchen der Zustände der abgespielten Prozesse nutzen zu können.

Anzeige

Da sich die Entwickler beim Erstellen des Tools auf das Debuggen von Firefox konzentrierten, weist es derzeit noch einige Schwachstellen auf, die zwar teilweise leicht zu beheben wären, O'Callahan aber dazu bewegen, zum jetzigen Zeitpunkt von einem Einsatz in anderen Projekten abzuraten. Darunter fallen momentan etwa der Umstand, dass rr einzig Single-Core-Maschinen emulieren kann, nur auf Intels Ivy- und Sandy-Bridge-Architektur funktioniert und außerstande ist, Prozesse aufzuzeichnen, die Speicher mit Prozessen teilen, die sich außerhalb des Baums befinden. Interessierte ruft er trotzdem dazu auf, rr auch in anderen Kontexten auszuprobieren und Fehlfunktionen zu melden, um die Weiterentwicklung des Werkzeugs voranzutreiben.

Mehr Informationen zum Projekt finden sich auf der dazugehörigen Webseite. Der Quelltext ist auf GitHub zu finden. (jul)

Anzeige