Clojure:
Використання дебагера
Як це зробити:
Clojure спирається на Java Virtual Machine (JVM), тому багато дебагингу відбувається за допомогою інструментів Java. Один з таких інструментів - CIDER
, потужний пакет для розробки Clojure в Emacs, який має солідні можливості для дебагингу. Давайте глибше зануримося:
;; Спочатку, підключіться до проекту Clojure в Emacs за допомогою CIDER
M-x cider-jack-in
;; Встановіть точку зупинки
;; Перейдіть до рядка у вашому коді Clojure, який ви хочете інспектувати і
;; натисніть "C-c M-b" або виконайте:
M-x cider-debug-defun-at-point
;; Коли код запуститься, ви натрапите на точку зупинки. CIDER запропонує вам:
;; 1. n для переходу до наступного логічного кроку виконання,
;; 2. c для продовження виконання до наступної точки зупинки,
;; 3. q для виходу з дебагингу.
;; Інспектуйте локальні змінні в точці зупинки
;; Перебуваючи на точці зупинки, напишіть:
locals
;; Ви побачите список локальних змінних та їх значення, надрукований у мінібуфері.
Приклад виводу може виглядати так:
{:x 10, :y 20, :result 200}
Поглиблене вивчення
Дебагер є інструментом старим як світ в термінах обчислень. Термін “bug” (помилка) був введений в ранні дні обчислень, коли справжній комаха викликав помилку, коротним замиканням в машині.
Хоча CIDER
чудово підходить для ентузіастів Emacs, існують альтернативи для дебагингу Clojure. Наприклад, використання IntelliJ з плагіном Cursive може надати більш GUI-орієнтований досвід дебагингу. Крім того, ви можете використовувати вбудований Leiningen або tools.deps для контролю потоку процесів під час дебагингу.
Під капотом, ці дебагери часто маніпулюють байткодами, виконують оцінки в спеціальних nREPL сесіях та пропонують інспекцію стеку викликів. Вони використовують можливості базової JVM, звертаючись до багатства фреймворків Java для дебагингу.