Debuggers in Lisps
Debuggers are one of the most essential tools for any kind of development.
Debuggers in Lispy languages make use of Lisp’s homoiconicity. They are a bit different from debuggers for languages like C or Java.
This kind of information is usually not needed in day to day development and hence it remains hidden.
In this talk, I will take Clojure’s cider-debug as an example and explain how it uses homoiconicity. Along with cider-debug, I will also talk about REPLs and how REPL client-server communication happens (with nREPL as an example).
- Why do we need debuggers.
- How GDB works.
- Properties of Lisp.
- How Cider debug works.
I’m going to try and explain most of the things without assuming any prior knowledge of Clojure.
But being familiar with Clojure (or some Lisp) will surely help.
Software Artisan at Helpshift Inc.