Debugging คืออะไร ? มาจากไหน ? มีขั้นตอนยังไงบ้างนะ ? พร้อมรู้จัก Debugger
l3uch
Debugging คืออะไร ? มาจากไหน ? มีขั้นตอนยังไงบ้างนะ ?
เชื่อว่าหลาย ๆ คนน่าจะทราบเกี่ยวกับที่มาของ "บัคคอมพิวเตอร์ (Computer Bug)" และจุดจบอันน่าเศร้าของเจ้าแมลงตัวน้อย ที่หลงบินเข้าไปจบชีวิตบนแผงวงจรคอมพิวเตอร์จนทำให้เครื่องประมวลผลผิดปกติและกลายมาเป็นหนึ่งในศัพท์คอมพิวเตอร์ที่ใช้กันอย่างแพร่หลายในปัจจุบันนี้มาแล้วอย่างแน่นอน แต่นอกเหนือไปจากคำว่า "บัค (Bug)" แล้วอีกคำหนึ่งที่เกิดขึ้นมาในช่วงเวลาไล่เลี่ยกันอย่าง "Debug" เองก็น่าสนใจไม่แพ้กันเลย
ข้อมูลเพิ่มเติม : Computer Bug หรือ บัคคอมพิวเตอร์ คืออะไร ? ทำไมแมลงถึงเป็นตัวร้าย ทำลายระบบคอมพิวเตอร์ ?
Debugging คืออะไร ? และมาจากไหน ?
ถ้าใครเคยทราบเรื่องราวเกี่ยวกับ Computer Bug มาอยู่ก่อนแล้วก็น่าจะเดาได้ไม่ยากเลยว่า "Debugging" ก็น่าจะหมายถึงการ "ปรับแก้" ระบบที่ติด Bug ให้กลับไปทำงานได้ตามปกติ
ซึ่งเมื่อย้อนกลับไปราวช่วงปี ค.ศ. 1940 (พ.ศ. 2483) ที่มีการค้นพบแมลงเจ้าปัญหาบนแผงวงจรคอมพิวเตอร์ Grace Hopper ที่เป็นผู้ทำการเก็บกู้ซากของแมลงออกไปนั้นได้เรียกขั้นตอนการทำงานของเขาว่าเป็นการ "Debugging" จึงทำให้มันกลายมาเป็นศัพท์ทางคอมพิวเตอร์ที่สื่อถึงการ "แก้ไขข้อผิดพลาดที่เกิดขึ้นในระบบ" นับแต่นั้นมา
ส่วนสาเหตุที่เลือกใช้คำว่า "Debug (ดีบัค)" แทนคำว่า "Bug Fix (แก้บัค)" ก็เป็นเพราะคำว่า "Bug (บัค)" ในที่นี้ทำหน้าที่เป็น "คำกริยา" ที่เป็นศัพท์เฉพาะในวงการคอมพิวเตอร์ ไม่ได้เป็น "คำนาม" ที่แปลว่า "แมลง" แต่อย่างใด (แม้ว่าที่มาของคำว่า Bug จะมาจากแมลงจริง ๆ ก็เถอะ)
และเมื่อเติมคำว่า "De" เข้าไปด้านหน้าคำ ก็จะทำให้ความหมายของคำนั้น ๆ "กลับขั้ว" ไปจากเดิม เช่น คำว่า "Defrost" ที่หมายถึงการละลายน้ำแข็ง หรือ "Degenerate" ที่หมายถึงความเสื่อมโทรม ดังนั้นเมื่อเติมคำว่า "De" ไปด้านหน้า "Bug" ก็ทำให้มันสื่อถึง "การแก้ไขข้อผิดพลาดภายในระบบ" นั่นเอง (จริง ๆ แล้วในภายหลังคำว่า "Bug" ก็กลายเป็นศัพท์แสลงที่สื่อถึงความผิดพลาดและมีคนใช้คำว่า Bug Fix อยู่บ้างประปราย แต่มันก็ไม่ได้รับความนิยมเท่าคำว่า Debug อยู่ดี)
ขั้นตอนที่เกี่ยวข้องกับ Debugging

ภาพจาก : https://www.edureka.co/blog/what-is-debugging/
- Identify the Error (ระบุปัญหา) : ระบุปัญหาหรือความผิกปกติที่เกิดขึ้นในขณะนั้น เช่น พิมพ์ Keyword ค้นหาบนเว็บไซต์แล้วไม่มีการแสดงผล หรือรูปภาพไม่ขึ้นตามที่ควรจะเป็น
- Fix the Error Location (สำรวจปัญหา) : เมื่อทราบปัญหาที่เกิดขึ้นอย่างชัดเจน จะทำให้สามารถค้นหาสาเหตุของการเกิดปัญหานั้น ๆ ได้ง่ายขึ้น เช่น ภาพแบนเนอร์ไม่แสดงผล ก็ดูตรวจสอบความผิดปกติของโค้ดบริเวณป้ายแบนเนอร์ (Banner) โดยที่ไม่จำเป็นต้องไล่ดูโค้ดทุกบรรทัดของทั้งเว็บไซต์
- Analyze the Error (วิเคราะห์ปัญหา) : เมื่อพบโค้ด ในส่วนที่เป็นปัญหาก็จะสามารถตรวจสอบความผิดปกติและวิเคราะห์สิ่งที่ทำให้เกิดปัญหาได้ เช่น ใช้ "ตัวอักษร z" แทนตัว "ตัวอักษร s" ทำให้รันระบบพลาด เป็นต้น
- Prove the Analysis (ตรวจสอบการวิเคราะห์ปัญหา) : หลังจากทำการวิเคราะห์ปัญหาที่เกิดขึ้นแล้วให้ลองตรวจสอบหาข้อผิดพลาดอื่น ๆ ที่อาจมองข้ามไปเพื่อป้องกันการเกิดการผิดพลาดซ้ำ
- Cover Lateral Damage (รัน Unit Test) : เพื่อทดสอบโค้ดที่จัดการแก้ไขและตรวจสอบซ้ำว่า โค้ดที่จะใช้งานเป็นโค้ดที่มีตัวสะกด, สัญลักษณ์ หรือการเว้นวรรคถูกต้อง
- Fix and Validate (แก้ไขปัญหา) : ดำเนินการแก้ไข โค้ดคำสั่งที่ระบุปัญหาไปข้างต้นและทดสอบระบบเพื่อดูผลลัพธ์ หากยัง Error อยู่อาจต้องมองหาจุดผิดพลาดอื่น ๆ เพิ่มเติม
การแก้ปัญหาในซอฟต์แวร์ (Software Debugging)
การแก้ระบบซอฟต์แวร์และเว็บไซต์ต่าง ๆ ให้กลับมาทำงานได้อย่างราบรื่น โดย Programmer หรือ Developer จะเป็นผู้ดำเนินการแก้ไขชุดคำสั่งที่เป็นผลให้ระบบทำงานผิดปกติ แต่การค้นหาแมลงหรือการ Identify Bug ในระบบนั้นอาจมาจากการทดสอบระบบของ ผู้ทดสอบซอฟต์แวร์ (Software Tester) หรือเสียงเรียกร้องของผู้ใช้งานทั่วไปที่พบปัญหาขณะใช้งานก็ได้
ยกตัวอย่างเช่น เมื่อผู้ใช้งาน กด "ปุ่ม Ctrl + Z" แล้วข้อความใน Box หายไปทั้งหมด แทนที่จะกลับค่าแค่ครั้งเดียว (ตัดเฉพาะข้อความที่พิมพ์ล่าสุด) Developer ก็จะต้องทำการค้นหา โค้ดคำสั่งที่ทำให้การทำงานของระบบผิดปกติไปและดำเนินการปรับแก้ให้กลับมาปกติอีกครั้งหนึ่ง

ภาพจาก : https://code.visualstudio.com/docs/editor/debugging
การแก้ปัญหาในอุปกรณ์ฮาร์ดแวร์ (Hardware Debugging)
ในขณะที่ Software Debugging เป็นการค้นหาและแก้ไขชุดคำสั่ง โค้ดที่ส่งผลให้ระบบทำงานผิดปกติ Hardware Debugging ก็เป็นการระบุและดำเนินการแก้ไขข้อผิดพลาดที่เกิดจากการ "เชื่อมต่อ" กันของอุปกรณ์ฮาร์ดแวร์ผ่าน JTAG (Joint Test Action Group) เช่น ปัญหาการเสียบสาย HDMI แล้วจอไม่แสดงผล, Bridge เชื่อมต่อภายในแผงวงจรทำงานผิดปกติ เป็นต้น
Debugger คืออะไร ?
สำหรับคำว่า "Debugger" นั้นมีอยู่ด้วยกัน 2 ความหมาย ได้แก่ บุคคลที่ทำหน้าที่แก้ไข Bug ภายในระบบ และอุปกรณ์ที่ใช้ในการ Debugging (Debugger Tools) ที่ช่วยทุ่นแรงของ Developer ในการระบุปัญหาและดำเนินการแก้ไขข้อผิดพลาดในระบบ (Bug) ที่พบได้บ่อย ๆ ช่วยประหยัดเวลาการทำงานของผู้พัฒนา (Developer) ในการนั่งไล่อ่านโค้ดทีละบรรทัดเพื่อปรับแก้
นอกจากนี้แล้ว Debugger ก็ยังช่วยให้ผู้ใช้ปลายทาง สามารถแก้ไขปัญหายิบย่อยอย่างการแสดงผลลิงก์ผิดปกติด้วยตนเองได้ง่าย ๆ ตัวอย่างเช่น เมื่อแชร์ลิงก์แล้วพบว่าภาพปก (Preview) ของลิงก์มีการแสดงผลผิดไปจากที่ควรจะเป็น หรือไม่ปรากฎภาพตัวอย่าง ก็สามารถกด Debug ด้วยตนเองได้ง่าย ๆ
Facebook Sharing Debugger
เครื่องมือช่วยระบุและแก้ไข Bug ที่เกิดจากการแชร์ลิงก์ในระบบของ Facebook โดยเมื่อพบลิงก์ผิดปกติก็สามารถนำเอา URL ดังกล่าวไปใส่ใน Sharing Debugger แล้วกด "ปุ่ม Debug" ได้เลย
ภาพจาก : https://swimburger.net/blog/web/verify-what-your-webpage-looks-like-in-google-facebook-twitter-linkedin-and-more
เว็บไซต์ Facebook Sharing Debugger ของ Facebook
Twitter Card Validator
ตัวช่วยในการแก้ Bug ของ Preview Card (รูปภาพตัวอย่างของเว็บไซต์) บน Twitter โดยเราสามารถวาง URL ที่มีการแสดงผลผิดปกติจากนั้นเลือก "ปุ่ม Preview Card" เพื่อให้ระบบดำเนินการแก้ไข Bug ได้
ภาพจาก : https://swimburger.net/blog/web/verify-what-your-webpage-looks-like-in-google-facebook-twitter-linkedin-and-more
เว็บไซต์ Twitter Card Validator ของ Twitter
Post Inspector (LinkedIn)
สำหรับโพสต์บน LinkedIn เองก็มีตัวช่วยอย่าง Post Inspector ที่เมื่อแนบ URL ของลิงก์เจ้าปัญหาและกดไปที่ "ปุ่ม Inspect" ให้ระบบดำเนินการตรวจสอบและจัดการแก้ไข Bug ของลิงก์นั้น ๆ
ภาพจาก : https://swimburger.net/blog/web/verify-what-your-webpage-looks-like-in-google-facebook-twitter-linkedin-and-more
เว็บไซต์ Post Inspector ของ Linkedin
ที่มา : www.techtarget.com , www.computerworld.com , gonocode.net , en.wikipedia.org , www.bbc.co.uk , high-tech-guide.com , www.sciencedirect.com , revdebug.com , www.edureka.co , www.javatpoint.com
|
เขียนโดย
ตัวเม่นผู้รักในการนอน หลงใหลในการกิน และมีความใฝ่ฝันจะเป็นนักดูคอนเสิร์ตแต่เหมือนศิลปินที่ชื่นชอบจะไม่รับรู้ว่าโลกนี้มียังประเทศไทยอยู่.. |




