Haskell:
การใช้งานโปรแกรมดีบักเกอร์

วิธีการ:

มาเดินเล่นกับ GHCi, สภาพแวดล้อมแบบโต้ตอบของ Haskell ที่สามารถทำหน้าที่เป็นตัวดีบักพื้นฐานได้ คุณเริ่มต้นมันขึ้นมาพร้อมโค้ด Haskell ของคุณแล้วเริ่มค้นหา นี่คือตัวอย่าง:

main :: IO ()
main = do
    putStrLn "เฮ้, คุณชื่ออะไร?"
    name <- getLine
    putStrLn $ "สวัสดี, " ++ name ++ "! มาดีบักกัน."
    let result = buggyFunction 5
    print result

buggyFunction :: Int -> Int
buggyFunction n = n * 2 -- ทำเป็นว่ามีบั๊กอยู่ที่นี่

เริ่มต้นการดีบักกับ GHCi:

$ ghci YourHaskellFile.hs

ตั้งจุดหยุดที่ buggyFunction:

Prelude> :break buggyFunction

เรียกใช้โปรแกรมของคุณ:

Prelude> :main
เฮ้, คุณชื่ออะไร?

โปรแกรมของคุณหยุดที่ buggyFunction ตอนนี้คุณสามารถตรวจสอบตัวแปร, เดินผ่านโค้ด, และประเมินนิพจน์ได้

ลงลึก:

โดยประวัติศาสตร์แล้ว ชื่อเสียงของ Haskell ว่ามีฟังก์ชันบริสุทธิ์และระบบการพิมพ์ที่แข็งแกร่งทำให้มีความเชื่อว่าเครื่องมือดีบักมีความสำคัญน้อยลง ความจริงแตกต่างออกไป—โปรแกรมที่ซับซ้อนเสมอได้ประโยชน์จากเครื่องมือดีบักที่ดี GHCi ให้คำสั่งดีบักพื้นฐาน อย่างไรก็ตาม, สำหรับประสบการณ์ที่มองเห็นได้มากกว่าหรือแอปพลิเคชันขนาดใหญ่ คุณอาจสำรวจ IDE ที่มีตัวดีบักในตัว, เช่น Visual Studio Code พร้อมส่วนขยายของ Haskell หรือปลั๊กอิน Haskell ของ IntelliJ

ทางเลือกอื่นสำหรับตัวดีบัก ได้แก่การใช้คำสั่งพิมพ์, ที่รู้จักกันในชื่อ “printf debugging”, หรือใช้ประโยชน์จากระบบการพิมพ์ที่แข็งแกร่งของ Haskell เพื่อทำให้สถานะที่ไม่ถูกต้องไม่สามารถแทนที่ได้ อย่างไรก็ตาม, บางครั้งการเดินขั้นโค้ดไม่มีอะไรทดแทนได้

สำหรับรายละเอียดการดำเนินการ, ตัวดีบักของ Haskell ทำงานกับระบบการรันไทม์ มันสามารถจัดการกับจุดหยุด, ขั้นตอนการดำเนินการ, และอนุญาตให้ตรวจสอบตัวแปรได้ อย่างไรก็ตาม, เนื่องจาก Haskell มีการประเมินแบบเฉื่อย สิ่งต่างๆ อาจดูไม่ตรงไปตรงมานัก การดีบักโปรแกรม Haskell มักหมายถึงการระมัดระวังโดยเมื่อและวิธีการที่นิพจน์ถูกประเมิน

ดูเพิ่มเติม: