© Excellent backgrounds/Shutterstock.com
Time-Travelling-Debugger als Alternative zu klassischen Debuggern

Back to the Future


Time-Travelling-Debugger versprechen das Paradies für Softwareentwickler: frei im Code vorwärts und rückwärts navigieren, nachträglich Logstatements einfügen, an beliebige Zeitpunkte in der Codeausführung springen. Wir nehmen diese vielversprechenden Tools genauer unter die Lupe und beantworten folgende Fragen: Wie funktioniert die Technologie? Wo kann man einen Time-Travelling-Debugger am besten einsetzen? Und welche Einschränkungen gibt es in der Praxis?

Die Grundidee für einen Time-Travelling-Debugger (TTD) ist einfach und bestechend: Der Entwickler soll sich im Debugger durch den Code nicht nur vorwärts, sondern auch rückwärts bewegen können. Darüber hinaus soll es möglich sein, zu einem beliebigen Zeitpunkt der Codeausführung zu springen.

Use Cases

Erweiterung des traditionellen Code-Debuggings: Wer kennt dieses Szenario nicht? Step over → step over → step into → step over → „Neiinn, schon wieder zu weit! Also wieder von vorne“. Wie schön wäre doch ein Step-Back-Button! Genau dieses Bedürfnis beim traditionellen Debuggen sollen TTDs stillen: Man kann sich vorwärts und rückwärts bewegen. Dadurch verliert man weniger Zeit, um die kritischen Codestellen zu finden.

Reproduktion von Ereignissen in produktiven Umgebungen: Die technischen Eigenheiten eines TTD (Details im nächsten Abschnitt) erlauben es, den üblichen Workflow des Debuggens auf ein höheres Level zu heben. Tritt zum Beispiel im Betrieb einer produktiven Software ein Fehler auf, sind die nächsten Schritte üblicherweise wie folgt:

  • Im Log Hinweise suchen, wie man den Fehler reproduzieren kann – falls vorhanden.

  • Versuchen, diesen Fehler in einem engen Rahmen nachzubilden.

  • Debuggen, um den Fehler zu finden.

Mit einem TTD wird der gesamte Run in einer produktiven Umgebung aufgenommen. Dadurch kann man die ersten zwei Schritte auslassen und direkt mit der Fehlersuche beginnen. Ein Nebeneffekt ist, dass man sich auch die Zeit sparen kann, Logstatements zu schreiben.

Trace Recording als Basistechnologie

Für die Umsetzung von TTDs verwendet man eine simple und naheliegende Idee: Jede ausgeführte Codezeile wird mit all ihren Aktoren und Parameterwerten chronologisch gespeichert (Trace Recording). Beim Debuggen wird der Code dann nicht tatsächlich ausgeführt, es sieht nur so aus. In Wirklichkeit wird der echte Ablauf einfach wiedergegeben, ähnlich wie bei einem Videorekorder. Dass man in diesem Set-up beliebig vorwärts und rückwärts springen kann, ist eine logische Konsequenz.

Mit aktivem Trace R...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang