-
บทวิจารณ์ของ David A. Wheeler
- "Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems" ของ David J. Agans ได้รับการยกย่องว่าเป็นหนังสือการดีบักที่จำเป็นสำหรับนักพัฒนาซอฟต์แวร์และฮาร์ดแวร์
- หนังสือเล่มนี้อธิบายหลักการพื้นฐานในการค้นหาและแก้ไขบั๊ก แทนที่จะเน้นเทคนิคเฉพาะทาง จึงมีประโยชน์อย่างยิ่งสำหรับนักพัฒนาระดับเริ่มต้นและระดับกลาง
- หนังสือจัดโครงสร้างโดยยึด "กฎทั้งเก้าข้อ" เป็นแกนหลัก พร้อมคำอธิบายและวิธีนำไปใช้สำหรับแต่ละข้อ
-
กฎทั้งเก้าข้อ
- ทำความเข้าใจระบบ: การอ่านคู่มือ เข้าใจพื้นฐาน และใช้เครื่องมือให้เป็น มีความสำคัญอย่างมาก
- ทำให้ความล้มเหลวเกิดขึ้นอีกครั้ง: การทำให้ปัญหาเกิดซ้ำ และค้นหาสาเหตุของบั๊กที่เกิดเป็นครั้งคราว เป็นสิ่งสำคัญ
- หยุดคิดแล้วสังเกต: เก็บข้อมูลก่อน และอย่าพึ่งพาการคาดเดา
- แบ่งแยกแล้วพิชิต: ค่อย ๆ จำกัดขอบเขตของปัญหา และใช้รูปแบบการทดสอบที่ระบุปัญหาได้ง่าย
- เปลี่ยนทีละอย่าง: แยกองค์ประกอบสำคัญออกจากกัน และเปลี่ยนการทดสอบทีละรายการ
- เก็บบันทึกร่องรอยการตรวจสอบ: บันทึกสิ่งที่ทำและผลลัพธ์ พร้อมตระหนักว่าทุกรายละเอียดอาจมีความสำคัญ
- ตรวจปลั๊กก่อน: ตั้งคำถามกับสิ่งที่สมมติไว้ และทดสอบเครื่องมือ
- มองจากมุมใหม่: การได้มุมมองใหม่และรับฟังเสียงจากประสบการณ์เป็นสิ่งสำคัญ
- ถ้ายังไม่ถูกแก้ ก็ยังไม่ถือว่าแก้แล้ว: ตรวจสอบว่าได้แก้ปัญหาจริงหรือไม่ และแก้ที่ต้นเหตุ
-
ข้อดีและข้อเสียของหนังสือ
- หนังสือเน้นที่หลักการพื้นฐานของการดีบัก ทำให้แตกต่างจากหนังสือเทคนิคเล่มอื่น ๆ
- มีคำแนะนำเชิงปฏิบัติสำหรับการรับมือกับปัญหาที่เกิดขึ้นเป็นครั้งคราว
- ภาคผนวกของหนังสือมีลิงก์ไปยังเว็บไซต์ที่เกี่ยวข้องและลิงก์ดาวน์โหลดโปสเตอร์
- จุดที่น่าเสียดายคือไม่มีรายการสรุปกฎทั้งหมดและกฎย่อยไว้ในหน้าเดียว และยังขาดคำแนะนำเชิงรูปธรรมสำหรับเทคโนโลยีเฉพาะบางประเภท
-
บทสรุป
- หนังสือเล่มนี้มีประโยชน์สำหรับการเรียนรู้หรือทบทวนหลักการพื้นฐานของการดีบัก และเป็นประโยชน์ทั้งกับผู้เริ่มต้นและผู้เชี่ยวชาญ
- David A. Wheeler แนะนำหนังสือเล่มนี้อย่างยิ่ง และเน้นย้ำถึงความสำคัญของหลักการพื้นฐาน
1 ความคิดเห็น
ความเห็นบน Hacker News
แม้จะมีแรงยั่วยวนให้แก้โค้ดที่มีบั๊ก แต่การทำโค้ดที่พังอยู่ให้พังหนักกว่าเดิมนั้นง่ายกว่าการซ่อมให้หาย การเริ่มจากตัวอย่างที่ทำงานได้ขนาดเล็กที่สุดแบบตัวอย่างไฟคริสต์มาสเป็นวิธีที่มีประสิทธิภาพในการหาปัญหา
สิ่งสำคัญในการแก้ปัญหาคืออย่าตื่นตระหนก ต้องคิดอย่างชัดเจน และผู้จัดการที่ดีจะช่วยสนับสนุนให้สามารถโฟกัสกับการแก้ปัญหาได้
git bisectมีประโยชน์ในการหาคอมมิตที่ทำให้เกิดปัญหาจากหลายคอมมิต โดยเฉพาะในโค้ดเบสขนาดใหญ่ที่ต้องการหาต้นตอของปัญหาอย่างรวดเร็วการเข้าใจระบบเป็นเรื่องสำคัญ แต่การอ่านคู่มือทั้งหมดเป็นเรื่องไม่สมจริง จึงต้องใช้แนวทางที่ปฏิบัติได้จริง
การแก้ไขไฟล์ที่ถูกต้องบนเครื่องที่ถูกต้องเป็นสิ่งสำคัญ
หนังสือที่แนะนำเพื่อฝึกแนวคิดการแก้ปัญหา:
กฎเพิ่มเติม:
ควรเพิ่มบั๊กเข้าไปเป็นเทสต์ใน CI เพื่อป้องกัน regression และควรตรวจสอบว่า CI ล้มเหลวก่อนแก้และผ่านหลังแก้หรือไม่
หลังดีบักเสร็จ งานยังไม่จบ ต้องถามสามคำถามกับทุกบั๊ก:
การทำให้ปัญหาถูกจำลองซ้ำได้ด้วยการตั้งค่าขั้นต่ำเป็นสิ่งสำคัญ ในกรณีส่วนใหญ่ วิธีนี้จะช่วยให้พบบั๊กได้ การแบ่งโค้ดครึ่งหนึ่งเพื่อหาว่าส่วนไหนผิดกันแน่เป็นวิธีที่มีประสิทธิภาพ