Aaron Fischer Ingenieur, Vater, Heimwerker, Problemlöser

23 März, 2016

Clojure Debugging in Emacs

TL;DR:

Die Kombination aus Emacs und CIDER ist meiner Meinung nach allem anderen weit überlegen. Debugging mit CIDER macht tatsächlich Spaß und geht einfach von der Hand.

Eine aktuelle Verson von CIDER (0.11+) vorausgesetzt, ist das Debugging von einzelnen Funktionen oder ganzen Funktionalitäten sehr einfach. Einfach an die Funktion, die getestet werden soll, ein #dbg voranstellen. Dies aktiviert den Debugger, wenn die Funktion ausgeführt wird. Mit n kann dann die Evaluation Schrittweise durchgeführt werden. Das Ergebnis wird stets hinter der Funktion angezeigt.

cider

Mit i können Ausdrücke an der aktuellen Stelle eingefügt (und direkt evaluiert) werden. Dies ist extrem hilfreich, wenn man verschiedene Inputs testen will, eine Schleife vorzeitig beenden will oder ein Fehlverhalten testen will. Mit l kann man sich zu jeder Zeit alle lokalen Variablen und deren Werte anzeigen lassen.

Ein weiteres cooles Feature von CIDER ist der enlighten-mode. Hier werden allen Symbolen/Variablen (die evaluiert werden) deren aktuellen Werte vorangestellt. Besonders bei komplexeren Funktionen mit vielen Bindings und/oder Verschachtelungen sieht man sofort, welcher Pfad evaluiert wurde und mit welchen Bindings. Die in anderen Programmiersprachen üblichen var_dump/println Debug-Sessions wirken dagegen, als kämen sie aus der Steinzeit.

cider

Zum Aktivieren genügt es, ein #light vor ein defn oder def zu schriben.