Clojure:
การใช้งานตัวดีบั๊ก

วิธีการ:

Clojure ทำงานบน Java Virtual Machine (JVM) ดังนั้นการดีบักจึงเกิดขึ้นโดยใช้เครื่องมือของ Java มากมาย หนึ่งในเครื่องมือเหล่านั้นคือ CIDER ซึ่งเป็นแพ็คเกจทรงพลังสำหรับการพัฒนา Clojure ใน Emacs ซึ่งมีความสามารถการดีบักที่เป็นเลิศ ไปดูกัน:

;; ก่อนอื่น เข้าสู่โครงการ Clojure ภายใน Emacs โดยใช้ CIDER
M-x cider-jack-in

;; ตั้งจุดหยุด (breakpoint)
;; ไปยังบรรทัดในโค้ด Clojure ที่คุณต้องการตรวจสอบและ
;; กด "C-c M-b" หรือ ปฏิบัติการ:
M-x cider-debug-defun-at-point

;; เมื่อโค้ดทำงาน คุณจะเจอกับจุดหยุด CIDER จะแสดงตัวเลือกด้วยคำสั่ง:
;; 1. n เพื่อไปยังขั้นตอนต่อไปที่เหมาะสมในการประมวลผล,
;; 2. c เพื่อดำเนินการต่อจนถึงจุดหยุดถัดไป,
;; 3. q เพื่อออกจากการดีบัก

;; ตรวจสอบตัวแปร locals ที่จุดหยุด
;; ขณะอยู่ที่จุดหยุด พิมพ์:
locals

;; คุณจะเห็นรายการของตัวแปร locals และค่าของพวกเขาที่แสดงอยู่ใน minibuffer

ตัวอย่างผลลัพธ์อาจดูเช่น:

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

การศึกษาลึก

เดบักเกอร์เป็นเครื่องมือที่เก่าแก่เป็นภูเขาในแง่ของการคำนวณ คำว่า “บั๊ก” ถูกคิดขึ้นมาในยุคแรกๆ ของการคำนวณเมื่อแมลงจริงๆ ทำให้เครื่องหยุดทำงานด้วยการลัดวงจร

ในขณะที่ CIDER เป็นเรื่องที่ดีสำหรับผู้ที่ชื่นชอบ Emacs ยังมีทางเลือกอื่นๆ สำหรับการดีบักของ Clojure ตัวอย่างเช่น การใช้ IntelliJ กับปลั๊กอิน Cursive สามารถให้ประสบการณ์ดีบักที่ขับเคลื่อนด้วย GUI มากขึ้น นอกจากนี้คุณยังสามารถใช้ Leiningen ในตัวหรือ tools.deps เพื่อควบคุมกระบวนการดีบัก

ใต้ฝาประทุน เดบักเกอร์เหล่านี้มักจะจัดการกับ bytecode ทำการประเมินในเซสชัน nREPL ที่กำหนดและเสนอการตรวจสอบ stack trace พวกเขาใช้ประโยชน์จากความสามารถของ JVM ที่อยู่ด้านล่าง โดยใช้คุณสมบัติการดีบักของ Java

ดูเพิ่มเติม