3.9.2 โปรแกรมตรวจสอบจุดบกพร่อง
เอ็ดเจอ ดิจสตร้า (Edsger Dijkstra) เป็นผู้บุกเบิกในด้านการพัฒนาโปรแกรมฝึกฝน คำว่า ความบกพร่อง (Bug) และการแก้จุดบกพร่อง (Debug) เป็นการพิจารณาสถานภาพในงานด้านวิศวกรรรมซอฟแวร์ ซึ่งนิยมใช้ในงานของขอบเขตทางการโปรแกรมซอฟแวร์
รูปเอ็ดเจอ ดิจสตร้า กับคำพูดของเขา
แนะนำเพื่อให้อ่านได้ต่อเนื่องให้ คลิกขวาเลือก Open link in new window
โปรแกรมตรวจสอบจุดบกพร่อง หรือดีบักเจอร์ (Debugger) เป็นโปรแกรมซอฟแวร์ที่ยอมรับการพิจารณาซึ่งเกิดขึ้นมาจากโค๊ดโปรแกรม และข้อมูลขณะที่โปรแกรมกำลังดำเนินการ (Executing)
โดยทั่วไปมันทำงานบนคอมพิวเตอร์พีซี นั่นคือ จะมีการเชื่อมต่อแบบชนิดพิเศษเพื่อให้ไมโครคอนโทรลเลอร์มีการพัฒนาทางด้านโปรแกรม ที่เรียกว่า โปรแกรมจำลองเครื่องจักรเสมือน หรืออีมูเลเตอร์ (Emulator)
รูปตัวอย่างการใช้โปรแกรมอีมูเลเตอร์เพื่อตรวจหาจุดบกพร่อง
การแก้ไขข้อบกพร่อง ค่อนข้างที่มีประโยชน์ในการหา และแก้ไขความผิดปกติ พวกมันไม่ใช่ทำงานแบบเวลาจริง หรือเรียลไทม์ (Real-time: ช่วงเวลาที่สั้นมากที่เกิดขึ้นขณะระบบคอมพิวเตอร์กำลังรับ และจัดการข้อมูล) และเพื่อนำไปสู่ความสามารถที่เกิดขึ้นตามจริงในการสร้าง จะต้องมีการทำงานของคอมพิวเตอร์ที่ถูกต้องอย่างเหมาะสม (Computer Operating Properly: COP) เพื่อตรวจหาสิ่งผิดปกติ
รูปหลักการของซีโอพี
อย่างไรก็ตาม หากโหมดการแก้จุดบกพร่องภูมิหลัง (Background Debug Mode: BDM) ถูกนำมาใช้ประโยชน์ในไมโครโปรเซสเซอร์ การแก้ไขข้อบกพร่องสามารถใช้ได้ เพื่อแสดงขั้นตอนการผ่านชุดคำสั่งที่สร้างไว้ตามขั้นตอน หรืออัลกอริทึม (Algorithm) ของโปรแกรม เพื่อทำให้เกิดความแน่ใจว่าโค๊ดนั่นเป็นการทำงานตามที่คาดไว้ ในค่าตัวแปรซึ่งอยู่ระหว่างกลาง และท้ายสุด
รูปตัวอย่างผังการต่อโหมดบีดีเอ็ม
รูปตัวอย่างอุปกรณ์ในด้านบีดีเอ็ม
โดยเฉพาะอย่างยิ่ง สิ่งเหล่านั้นมีค่าความสัมพันต่อบางอย่างที่ทางด้านค่าของอนาล็อกด้านขาเข้า หรือด้านขาออก สามารถทำการตรวจสอบได้ การแก้ไขข้อบกพร่องส่วนใหญ่ยอมให้เปิดหน้าต่างวินโดว์ได้หลาย ๆ หน้าต่าง
การตั้งค่าของจุดพักในการทำงานของโปรแกรมในโค๊ด และบางครั้งก็มีการทำรีแฟลช (Reflashing) ของโปรแกรมลงในโปรแกรมจำลองไมโครคอนโทรลเลอร์ (Microcontroller emulator) ยกตัวอย่างเช่น การแก้ไขข้อบกพร่องนอราล (Noral debugger) ที่นำมาใช้งานในโมโตโรลาเฮชซีเอส 12
รูปโมโตโรลา เฮ็ชซึเอส 12
ซอฟแวร์ในไมโครคอนโทรลเลอร์มีความสามารถตรวจสอบตัวมัน และอุปการณ์ฮาร์ดแวร์ได้เอง โดยการโปรแกรมในการตรวจสอบ (Checksum) บางส่วน หรือโดยรวม ของส่วนที่มีการกำหนดในรอม และ / หรืออีอีพร็อม
ซอฟแวร์สามารถตรวจสอบเพื่อทำให้เกิดความแน่ใจในโปรแกรม และข้อมูลว่ามีความถูกต้อง โดยสลับกันเขียน และอ่าน 0x55 และ 0xAA ที่แรม (การทดสอบบอร์ด (Checkerboard test)) โปรแกรมสามารถตรวจสอบแรม และบัสให้สามารถทำงานได้อย่างถูกต้อง งานเหล่านี้เป็นสิ่งเริ่มต้น ซึ่งควรจะทำกับทุก ๆ ผลิตภัณฑ์ฮาร์ดแวร์ ที่ควรมีการดำเนินงานเป็นรอบวัฏจักร
ข้อคิดดี ๆ ที่นำมาฝาก
“ความสำเร็จ มันอยู่ไกลเกินไปถึง
กับคนซึ่งนั่งหงอย และคอยหา
แต่ความสำเร็จ มันมาอยู่แค่ปลายตา
กับคนที่คิดว่าต้องพยายาม”