Clojure:
デバッガーの使い方

方法:

ClojureはJava Virtual Machine(JVM)に依存しているため、多くのデバッグはJavaツールで行われます。そのようなツールの一つがCIDERで、Emacs内でのClojure開発のためのパワーハウスパッケージであり、堅牢なデバッグ機能を持っています。さあ、潜りましょう:

;; まず、Emacs内でCIDERを使用してClojureプロジェクトに接続します
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

;; minibufferにローカル変数とその値のリストが表示されます。

サンプル出力は次のようになるかもしれません:

{:x 10, :y 20, :result 200}

深掘り

デバッガは、コンピューティング用語で言えば古き良き時代からあるツールです。「バグ」という用語は、実際の昆虫が機械の回路をショートさせてエラーを引き起こしたコンピューティングの初期の日々に遡ります。

CIDERはEmacs愛好者には素晴らしいですが、Clojureデバッグのための代替手段もあります。たとえば、IntelliJとCursiveプラグインを使用すると、よりGUI駆動のデバッグ体験を得ることができます。さらに、組み込みのLeiningenやtools.depsを使用してデバッグ時のプロセスフローを制御することができます。

内部では、これらのデバッガはしばしばバイトコードを操作し、専用のnREPLセッションで評価を行い、スタックトレースの検査を提供します。彼らはJVMの下層の機能を活用し、Javaのデバッグフレームワークの豊富なリソースにアクセスしています。

参照