โปรแกรมตรวจแก้จุดบกพร่องกนู

โปรแกรมตรวจแก้จุดบกพร่องกนู หรือ GNU Debugger นิยมเรียกย่อ ๆ ว่า GDB เป็นโปรแกรมดีบักเกอร์ของโครงการกนู ทำงานบนระบบปฏิบัติการแบบยูนิกซ์ สนับสนุนภาษาต่าง ๆ เช่น ภาษาซี, ซีพลัสพลัส, เอดา และ ฟอร์แทรน เป็นต้น
GDB ทำงานในระบบบรรทัดคำสั่ง ผู้ใช้ต้องสั่งงานโดยการพิมพ์คำสั่ง แต่ถ้าหากต้องการส่วนต่อประสานกราฟิกกับผู้ใช้ ก็สามารถทำได้โดยการทำงานผ่านโปรแกรมฟรอนต์เอ็นด์ (frontend) เช่น โปรแกรม DDD (Data Display Debugger) ซึ่งจะไปเรียก GDB อีกทีหนึ่ง

**ประวัติ**
GDB เริ่มพัฒนาโดยริชาร์ด สตอลแมน เมื่อ พ.ศ. 2529 เพื่อให้เป็นส่วนหนึ่งของระบบกนู หลังจากที่เขาพัฒนา GNU Emacs จนมีความเสถียรในระดับที่น่าพอใจ
แนวความคิดของ GDB ได้มาจาก DBX ซึ่งเป็นโปรแกรมดีบักเกอร์ ที่มากับระบบยูนิกซ์ บีเอสดี
ปัจจุบัน GDB ดูแลโดย GDB Steering Committee ซึ่งเป็นคณะกรรมการที่ตั้งโดย มูลนิธิซอฟต์แวร์เสรี (FSF)

**รายละเอียดทางเทคนิค**

**คุณสมบัติ**
GDB ประกอบด้วยคุณสมบัติมากมายสำหรับการติดตามและแก้ไขการทำงานของโปรแกรมคอมพิวเตอร์ ผู้ใช้สามารถตรวจสอบและแก้ไขค่าของตัวแปรภายในของโปรแกรม และแม้แต่เรียกใช้ฟังก์ชันโดยไม่ขึ้นกับพฤติกรรมปกติของโปรแกรม
โปรเซสเซอร์เป้าหมาย GDB (ตั้งแต่ปี พ.ศ. 2546) ประกอบด้วย: Alpha, ARM, AVR, H8/300, Altera Nios/Nios II, System/370, System 390, X86 และส่วนขยาย 64-บิต X86-64, IA-64 "Itanium" , Motorola 68000, MIPS, PA-RISC, PowerPC, SuperH, SPARC และ VAX และโปรเซสเซอร์เป้าหมายที่เป็นที่รู้จักน้อยอีกหลายรุ่น
GDB ยังคงพัฒนาอย่างต่อเนื่อง โดยคุณสมบัติใหม่ของเวอร์ชัน 7.0 นั้นรองรับสคริปต์ภาษาไพทอน และสคริปต์ GNU Guile (ในเวอร์ชัน 7.8) รวมทั้งการสนับสนุน "การดีบักแบบย้อนกลับได้" ซึ่งอนุญาตให้เซสชันการดีบักย้อนกลับไปได้ เหมือนกับการย้อนโปรแกรมที่ล้มเหลวเพื่อดูว่าเกิดปัญหาอะไรขึ้น

**การตรวจแก้จุดบกพร่องจากระยะไกล**
GDB นำเสนอการทำงานแบบ "ระยะไกล" ที่มักใช้เมื่อทำการตรวจแก้จุดบกพร่องในระบบฝังตัว การทำงานระยะไกลคือเมื่อ GDB ทำงานบนเครื่องหนึ่งและโปรแกรมที่กำลังดีบักจะทำงานบนเครื่องอื่น GDB สามารถสื่อสารกับโปรแกรมต้นทางระยะไกลที่เข้าใจโพรโทคอลของ GDB ผ่านช่องทางสื่อสารอนุกรมหรือโพรโทคอล TCP/IP  โปรแกรมต้นทางระยะไกลสามารถสร้างขึ้นได้โดยการเชื่อมโยงไปยังไฟล์ในเครื่องต้นทางที่เหมาะสมซึ่งสนับสนุน GDB และได้เพิ่มข้อมูลโพรโทคอลการสื่อสารมายังเครื่องปลายทาง  หรือการใช้ gdbserver ก็สามารถใช้เพื่อดีบักโปรแกรมจากระยะไกลได้ โดยไม่จำเป็นต้องเปลี่ยนแปลงโปรแกรมต้นทางแต่อย่างใด
นอกจากนี้ยังสามารถใช้ KGDB เพื่อดีบักการรันลินุกซ์ เคอร์เนล ในระดับซอร์สด้วย GDB ซึ่งด้วย KGDB ผู้พัฒนาเคอร์เนลสามารถดีบักเคอร์เนลได้ในลักษณะเดียวกับการดีบักโปรแกรมแอปพลิเคชัน ทำให้เป็นไปได้ที่จะวางเบรกพอยต์ในเคอร์เนล แล้วสั่งการทำงานและสังเกตตัวแปร บนสถาปัตยกรรมโปรเซสเซอร์ที่มีรีจิสเตอร์สำหรับดีบักฮาร์ดแวร์ จุดตรวจสอบสามารถตั้งค่าจากจุดทริกเกอร์เบรกพอยต์ ซึ่งกำหนดตำแหน่งของหน่วยความจำที่ระบุถูกเรียกใช้งานหรือเข้าถึง โดย KGDB ต้องการเครื่องเพิ่มเติมสำหรับที่จะเชื่อมต่อกับเครื่องเพื่อทำการดีบักโดยใช้สายเคเบิลอนุกรม หรืออีเทอร์เน็ต สำหรับในระบบปฏิบัติการฟรีบีเอสดี สามารถดีบักได้โดยใช้การเข้าถึงหน่วยความจำโดยตรง (DMA) ผ่านไฟร์ไวร์

**ตัวอย่างของคำสั่ง**

**อ้างอิง**

**แหล่งข้อมูลอื่น**
 UltraGDB: Visual C/C++ Debugging with GDB on Windows and Linux date=2017-12-12 - KGDB: Linux Kernel Source Level Debugger

**คู่มือ**
Richard M. Stallman, Roland Pesch, Stan Shebs, et al.,  Debugging with GDB (Free Software Foundation, 2011) 978-0-9831592-3-0
*date=2007-03-03
หมวดหมู่:โครงการกนู
หมวดหมู่:ซอฟต์แวร์เสรี
หมวดหมู่:การเขียนโปรแกรม