Elixir:
การใช้งานดีบักเกอร์

วิธีการ:

Elixir มาพร้อมกับตัวดีบักแบบกราฟิกอินเทอร์เฟสที่ใช้งานได้ภายในและเรียกว่า :debugger เพื่อใช้งาน, คุณจำเป็นต้องเริ่มต้นและเชื่อมต่อไปยังกระบวนการที่กำลังทำงาน

ขั้นแรก, ตรวจสอบว่าคุณได้เริ่ม :debugger ภายในเซสชั่น iex:

iex> :debugger.start()
{:ok, #PID<0.108.0>}

ตอนนี้, ตีความโมดูลโค้ดที่คุณต้องการดีบัก:

iex> :int.ni(MyApp.MyModule)
{:module, MyApp.MyModule}

คุณสามารถตั้งจุดหยุด (breakpoint):

iex> :int.break(MyApp.MyModule, line_number)
:ok

แล้ว, เรียกใช้ฟังก์ชันของคุณเพื่อให้ตรงกับจุดหยุดและเดินผ่านโค้ดของคุณ:

iex> MyApp.MyModule.my_function(arg1, arg2)
# Debugger จะหยุดการเดินทางที่บรรทัดที่มีจุดหยุด

ดูลึกลงไป

ก่อนที่ Elixir จะมี :debugger, Erlang ได้มอบตัวดีบักที่ Elixir ใช้; มันแข็งแกร่งและเก่งอย่างยิ่งในการจัดการกับกระบวนการแบบขนาน(concurrent processes), ซึ่งเป็นจุดเด่นของ Erlang VM (BEAM) ไม่เหมือนกับตัวดีบักอื่นๆ, :debugger ไม่อนุญาตให้เปลี่ยนแปลงตัวแปรได้ทันที, เนื่องจากธรรมชาติของข้อมูลใน Elixir ที่ไม่สามารถเปลี่ยนแปลงได้ ส่วนทางเลือกอื่นๆ, คุณมี IEx.pry ที่ให้คุณหยุดการทำงานและกระโดดเข้าไปใน REPL ที่จุดใดก็ตามในโค้ดของคุณ, ซึ่งอาจเป็นประโยชน์มาก

ในขณะที่ :debugger เหมาะสำหรับอินเทอร์เฟสแบบกราฟิก, บางคนอาจชอบใช้เครื่องมือ :observer ซึ่งให้บริการตรวจสอบกระบวนการและเมตริกของระบบ, แม้ว่าจะไม่ได้มุ่งเน้นไปที่การเดินผ่านโค้ดโดยตรงก็ตาม ชุมชนของ Elixir ยังมีส่วนร่วมในการสร้างเครื่องมือเช่น visualixir และ rexbug, ขยายระบบนิเวศของเครื่องมือดีบักไปเหนือกว่าค่าเริ่มต้น

ดูเพิ่มเติม