**โปรแกรมตรวจแก้จุดบกพร่องกนู** หรือ **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) ผ่านไฟร์ไวร์

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

|  |  |
| --- | --- |
| gdb program | ดีบักโปรแกรม (จากยูนิกซ์เชลล์) |
| run -v | รันโปรแกรมเป้าหมายด้วยค่าที่กำหนด |
| bt  | ดีบักย้อนกลับ (ในกรณีโปรแกรมล้มเหลว) |
| info registers | ดัมพ์รีจิสเตอร์ทั้งหมด |
| disas $pc-32, $pc+32 | แปลกลับเป็นภาษาแอสเซมบลี |

อ้างอิง
-------

1. ↑  Brobecker, Joel (2020-10-24). "GDB 10.1 released!". สืบค้นเมื่อ 2020-10-24.
2. ↑  *ศัพท์คอมพิวเตอร์และเทคโนโลยีสารสนเทศ ฉบับราชบัณฑิตยสถาน* (7 ed.). กรุงเทพฯ: นานมีบุ๊คส์. 2549. ISBN 9789749996485. `{{cite book}}`: ตรวจสอบค่าวันที่ใน: `|date=` (help)
3. ↑  "Richard Stallman lecture at the Royal Institute of Technology, Sweden (1986-10-30)". สืบค้นเมื่อ 2006-09-21. Then after GNU Emacs was reasonably stable, which took all in all about a year and a half, I started getting back to other parts of the system. I developed a debugger which I called GDB which is a symbolic debugger for C code, which recently entered distribution. Now this debugger is to a large extent in the spirit of DBX, which is a debugger that comes with Berkeley Unix.
4. ↑  "GDB Steering Committee". สืบค้นเมื่อ 2008-05-11.
5. ↑  "GDB 7.0 Release Notes". สืบค้นเมื่อ 2011-11-28.
6. ↑  Joel Brobecker (2014-07-29). "GDB 7.8 released!". สืบค้นเมื่อ 2014-07-30.
7. ↑  "Howto: GDB Remote Serial Protocol: Writing a RSP Server" (PDF).
8. ↑  "Implementing a remote stub".
9. ↑  "Kernel debugging with Dcons".

* "เว็บไซต์ GDB". สืบค้นเมื่อ 2008-06-21.

แหล่งข้อมูลอื่น
---------------


คอมมอนส์ มีภาพและสื่อเกี่ยวกับ:  
**โปรแกรมตรวจแก้จุดบกพร่องกนู**

* เว็บไซต์ทางการ
* UltraGDB: Visual C/C++ Debugging with GDB on Windows and Linux เก็บถาวร 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) ISBN 978-0-9831592-3-0
* GDB Internals ที่ เวย์แบ็กแมชชีน (เก็บถาวร 2007-03-03)

  


|  |  |
| --- | --- |
| การควบคุมรายการหลักฐาน: หอสมุดแห่งชาติ แก้ไขสิ่งนี้ที่วิกิสนเทศ | 
* เยอรมนี

 |