Record and Replay: Aufnahmen debuggen statt Echtzeit-Programme
Eine fehlerhafte Ausführung aufnehmen, dann sooft wie nötig das Gleiche abspielen und debuggen: Das soll RR unter Linux leisten. Bisher funktioniert das Mozilla-Projekt aber nur bei Fehlern im Firefox richtig.

Record and Replay (RR) - aufnehmen und wieder abspielen - lautet das Konzept und der Name eines Debugging-Tools, das Mozilla-Entwickler für die Fehlerbehebung bei Firefox erstellt haben. Damit soll das nichtdeterministische Ausführen eines Programms aufgezeichnet werden, beim anschließenden Abspielen werden die immer wieder gleichen Prozesse, Register- und Speicherinhalte zum Beheben der Fehler benutzt - sooft der Entwickler dies möchte.
|
Video: Demo von RR - Mozilla
|
Erweiterung zu GDB
Wird eine Anwendung mit RR ausgeführt, zeichnet das Werkzeug den gesamten Prozessbaum unter Linux auf und speichert ihn auf der Festplatte. Neben den Prozessen, Subprozessen und Threads zeichnet RR auch Adressräume, deren Inhalte, verwendete Register oder auch die für Systemaufrufe genutzten Daten auf.
Über eine Schnittstelle an den Gnu-Debugger-Server lässt sich das Programm wie gewohnt untersuchen. Allerdings wird immer die erstellte Aufnahme gestartet, statt wie sonst üblich eine neue Instanz des Programms. Dadurch sind etwa Speicherzuweisungen in jedem Durchlauf gleich, wodurch die Speicheradressen vergleichsweise einfach überprüft werden können.
Hilfreich mit Einschränkungen
Bei der Entwicklung von RR legten die Programmierer vor allem Wert darauf, dass das Werkzeug die Kopie nicht viel langsamer ausführt als die tatsächliche Anwendung. Allerdings gibt Robert O'Callahan zu, dass Mozilla aufgegeben habe, die Leistung in diesem Bereich zu verbessern, da die Beteiligten mit der bisherigen Geschwindigkeit zufrieden seien.
Das Team hält es auch für sehr wahrscheinlich, dass sich RR für eine Vielzahl unterschiedlicher C- und C++-Projekte eigne, auch wenn es bisher nur für das Debuggen von Firefox verwendet worden sei. Mozilla sei aber offen für Rückmeldungen oder auch Beiträge zum Code, insbesondere für Hinweise auf oder auch die Bereinigung von Fehlern in RR.
Bis jetzt emuliert RR nur einen Einkernrechner, so dass auf Parallelisierung ausgelegte Programme erheblich verlangsamt werden. Ebenso werden derzeit nur 32-Bit-Anwendungen der x86-Architektur unterstützt und auch Prozesse, die mit Shared-Memory arbeiten, lassen sich nicht zufriedenstellend verwenden.
Das Entwickler-Team hofft aber, dass künftig viele Projekte RR benutzten und zum Ausbau des Programms beitragen. Der Quellcode von RR steht zum Download über Github bereit, Pakete für Fedora oder Ubuntu stehen ebenfalls bereit. Bis jetzt funktioniert RR wegen spezieller Anpassungen nur unter Intels Sandy-Bridge- und Ivy-Bridge-Architekturen, die Unterstützung für Haswell soll aber noch folgen.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Und was wenn der Bug aufgrund eines bestimmten IO (Netzwerk, Disk, User Eingabe...
Setzte sich dieses possierliche Progrämmchen durch, würde uns dies ja nun endlich die...