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 для дебагингу.

Дивіться також