4. Debugging & Code Review
หน้าหลัก › โมดูล 4: Debugging & Code Review
บทเรียน 4.1

ให้ Claude หา Root Cause ของ Error

หนึ่งในงานที่ Claude Code เก่งที่สุดคือ debug ให้มันอ่าน error message แล้วหา root cause พร้อมแก้ บทนี้สอนวิธีใช้ให้ได้ผลสูงสุด

เมื่อเรียนจบบทนี้ คุณจะ…

  • ใช้ Claude Code ในการแก้ปัญหา Error ได้
  • อธิบายวิธีให้ข้อมูล Error กับ Claude ได้อย่างมีประสิทธิภาพ
  • ขอให้ Claude หา 'Root Cause' ของ Error ได้
ไล่หาต้นตอที่แท้จริงของ error ไม่ใช่แค่ปลายเหตุ
ไล่หาต้นตอที่แท้จริงของ error ไม่ใช่แค่ปลายเหตุ

ทำไมต้องหา "Root Cause" ของ Error?

เวลาที่เราเขียนโปรแกรมหรือใช้งานโปรแกรม แล้วเจอกับข้อผิดพลาด หรือที่เรียกว่า "Error" (เออร์เรอร์) มันก็เหมือนกับเวลาที่เราไม่สบายครับ เราอาจจะปวดหัว ตัวร้อน ซึ่งเป็นแค่ "อาการ" ของโรคเท่านั้น การจะหายขาดได้ เราต้องรู้ว่า "ต้นเหตุ" จริงๆ คืออะไร เช่น เป็นไข้หวัดใหญ่ หรือแค่นอนน้อย

ในโลกของการเขียนโปรแกรมก็เหมือนกันครับ Error Message ที่เราเห็นเป็นแค่ "อาการ" ที่โปรแกรมแสดงออกมา การจะแก้ไขให้โปรแกรมกลับมาทำงานได้ดีอย่างยั่งยืน เราต้องหา "Root Cause" หรือ "สาเหตุที่แท้จริง" ของปัญหานั้นให้เจอ Claude Code เก่งมากๆ ในการช่วยเราวิเคราะห์หาต้นเหตุเหล่านี้ครับ

การแก้ปัญหาที่ต้นเหตุ จะช่วยให้โปรแกรมของคุณแข็งแรงและไม่เกิดปัญหาเดิมซ้ำๆ

ข้อมูลที่ Claude ต้องการ เพื่อช่วยเราได้เต็มที่

ลองนึกภาพว่าคุณไปหาหมอ ถ้าคุณบอกหมอแค่ว่า "ไม่สบาย" หมอก็คงวินิจฉัยยากใช่ไหมครับ? แต่ถ้าคุณบอกว่า "ปวดหัวมา 2 วันแล้ว มีไข้ 38 องศา เจ็บคอด้วย" หมอก็จะเข้าใจอาการและวินิจฉัยได้ดีขึ้น

Claude Code ก็ต้องการข้อมูลที่ครบถ้วนและชัดเจนแบบนั้นเลยครับ ข้อมูลสำคัญที่สุดสองอย่างคือ:

1. **Error Message แบบเต็มๆ:** อย่าตัดข้อความใดๆ ออกไปเลยครับ เพราะทุกคำพูดใน Error Message มีความหมายและเป็นเบาะแสสำคัญในการแกะรอยปัญหา

2. **บริบท (Context) ของปัญหา:** คุณกำลังทำอะไรอยู่ตอนที่ Error เกิดขึ้น? ใช้คำสั่งอะไรไป? โปรแกรมส่วนไหนกำลังทำงาน? ข้อมูลเหล่านี้จะช่วยให้ Claude เข้าใจสถานการณ์และมองเห็นภาพรวมของปัญหาได้ชัดเจนขึ้น

การให้ข้อมูลครบถ้วนตั้งแต่แรก จะช่วยให้ Claude ทำงานได้เร็วและแม่นยำขึ้นเยอะเลยนะ

ส่ง Error Message และบริบทให้ Claude ยังไง?

เมื่อคุณเจอ Error สิ่งแรกที่ต้องทำคือคัดลอก Error Message ทั้งหมดครับ โดยปกติแล้ว Error Message จะปรากฏในหน้าต่าง Terminal, Command Prompt หรือใน Log File ของโปรแกรม ให้คุณเลือกทั้งหมดแล้วคัดลอก (Copy) มาให้ Claude

จากนั้น ให้คุณอธิบาย "บริบท" อย่างละเอียดที่สุดเท่าที่จะทำได้ เช่น "ผมกำลังรันไฟล์ app.py ด้วยคำสั่ง python app.py แล้วเจอ Error นี้ครับ" หรือ "ผมกำลังติดตั้งไลบรารี requests ด้วย pip install requests แล้วเจอ Error นี้" การเล่าเรื่องราวที่นำไปสู่ Error จะเป็นประโยชน์อย่างมาก

  1. คัดลอก Error Message ทั้งหมดที่ปรากฏขึ้นมา
  2. อธิบายบริบทให้ชัดเจนว่าคุณกำลังทำอะไรอยู่ ใช้คำสั่งอะไร หรืออยู่ในขั้นตอนไหนของโปรแกรม
ยิ่งคุณอธิบายบริบทได้ละเอียดเท่าไหร่ Claude ก็จะยิ่งเข้าใจปัญหาได้ดีขึ้นเท่านั้น

ตัวอย่าง Prompt เด็ด! ให้ Claude หา Root Cause

นี่คือ Prompt (คำสั่ง) ที่เราจะใช้คุยกับ Claude เพื่อให้มันช่วยหา Root Cause ครับ Prompt นี้ถูกออกแบบมาให้ Claude ได้ข้อมูลครบถ้วนและรู้ว่าต้องทำอะไรต่อ

ถ้า Error ของคุณเกิดขึ้นตอนที่โปรแกรมกำลังทำงานอยู่ (Runtime Error) Claude สามารถลอง "รันคำสั่ง" เพื่อจำลองสถานการณ์และ "debug เป็นลูป" ได้เอง นั่นหมายความว่ามันจะลองแก้ปัญหา ตรวจสอบผล แล้วแก้ต่อวนไปเรื่อยๆ จนกว่าจะเจอทางออกที่ดีที่สุด

Prompt นี้จะบอก Claude ว่า: 1) ให้รันคำสั่งอะไร 2) Error ที่เจอคืออะไร 3) เป้าหมายคือการหาสาเหตุที่แท้จริงและแก้ไข และ 4) อนุญาตให้ Claude รันคำสั่งเพิ่มเติมเพื่อตรวจสอบได้

  1. คัดลอก Prompt ตัวอย่างนี้:
  2. ลองใช้ Prompt นี้กับ Claude รันคำสั่ง [คำสั่ง] แล้วเจอ error นี้: [วาง error เต็มๆ] ช่วยหาสาเหตุที่แท้จริงแล้วแก้ให้หน่อย ถ้าจำเป็นรันคำสั่งเพื่อตรวจสอบได้
  3. แทนที่ [คำสั่ง] ด้วยคำสั่งที่คุณใช้แล้วเกิด Error (เช่น python app.py, npm start)
  4. แทนที่ [วาง error เต็มๆ] ด้วย Error Message ทั้งหมดที่คุณคัดลอกมา
Prompt นี้เป็นจุดเริ่มต้นที่ดี คุณสามารถปรับเปลี่ยนคำพูดให้เข้ากับสถานการณ์ของคุณได้เลย

เคล็ดลับ: ขอ "Root Cause" ไม่ใช่แค่ "แก้ Error"

นี่คือเคล็ดลับทองคำเลยครับ! ถ้าคุณบอก Claude แค่ว่า "ช่วยแก้ Error ให้หน่อย" บางที Claude อาจจะให้แค่ "วิธีแก้แบบผิวเผิน" หรือ "Workaround" ที่ทำให้ Error หายไปชั่วคราว แต่ไม่ได้แก้ปัญหาที่ต้นตอจริงๆ เหมือนกับการกินยาแก้ปวดที่ช่วยบรรเทาอาการ แต่ไม่ได้รักษาโรคให้หายขาด

แต่ถ้าคุณขอว่า "ช่วยหาสาเหตุที่แท้จริง (Root Cause) แล้วแก้ให้หน่อย" Claude จะพยายามลงลึกไปถึงต้นตอของปัญหาจริงๆ ครับ มันจะวิเคราะห์อย่างละเอียดว่าทำไมถึงเกิด Error นี้ขึ้น และเสนอวิธีแก้ไขที่ยั่งยืน ซึ่งจะช่วยป้องกันไม่ให้ปัญหาเดิมๆ กลับมาเกิดขึ้นอีกในอนาคต

การแก้ปัญหาที่ต้นเหตุ จะช่วยให้คุณไม่ต้องเจอปัญหาเดิมซ้ำๆ ในอนาคต
ลองใช้ Prompt นี้กับ Claude
รันคำสั่ง [คำสั่ง] แล้วเจอ error นี้: [วาง error เต็มๆ] ช่วยหาสาเหตุที่แท้จริงแล้วแก้ให้หน่อย ถ้าจำเป็นรันคำสั่งเพื่อตรวจสอบได้
เคล็ดลับ: อย่าแค่ขอให้ 'แก้ error' — ขอให้ 'หา root cause' ด้วย จะได้แก้ที่ต้นเหตุ ไม่ใช่กลบอาการ
สรุปบทนี้
  • วาง error เต็มๆ ไม่ตัด
  • ให้ context ว่าทำอะไรตอนเกิด
  • ขอ root cause ไม่ใช่แค่กลบอาการ
แบบทดสอบท้ายบท
ลองตอบดู แล้วระบบจะเฉลยให้ทันที
ข้อ 1.เมื่อเจอ Error สิ่งสำคัญที่สุดที่ควรบอก Claude คืออะไร?
เฉลย: เนื้อหาบอกว่าให้ 'วาง error message เต็มๆ (อย่าตัด) แล้วให้ context ว่าทำอะไรอยู่ตอนเกิด error' ครับ
ข้อ 2.เคล็ดลับสำคัญในการขอให้ Claude ช่วยแก้ Error คืออะไร?
เฉลย: เคล็ดลับคือ 'อย่าแค่ขอให้ 'แก้ error' — ขอให้ 'หา root cause' ด้วย จะได้แก้ที่ต้นเหตุ' ครับ