โปรแกรมตรวจแก้จุดบกพร่องกนู
ลิงก์ข้ามภาษาในบทความนี้ มีไว้ให้ผู้อ่านและผู้ร่วมแก้ไขบทความศึกษาเพิ่มเติมโดยสะดวก เนื่องจากวิกิพีเดียภาษาไทยยังไม่มีบทความดังกล่าว กระนั้น ควรรีบสร้างเป็นบทความโดยเร็วที่สุด |
โปรแกรมตรวจแก้จุดบกพร่องกนู หรือ GNU Debugger นิยมเรียกย่อ ๆ ว่า GDB เป็นโปรแกรมดีบักเกอร์ของโครงการกนู ทำงานบนระบบปฏิบัติการแบบยูนิกซ์ สนับสนุนภาษาต่าง ๆ เช่น ภาษาซี, ซีพลัสพลัส, เอดา และ ฟอร์แทรน เป็นต้น
ผู้พัฒนา | GNU Project |
---|---|
วันที่เปิดตัว | 1986 |
รุ่นล่าสุด | 10.1 / 24 ตุลาคม 2020 |
เขียนบน | ภาษาซี |
ระบบปฏิบัติการ | ยูนิกซ์, วินโดวส์ |
ประเภท | โปรแกรมตรวจแก้จุดบกพร่อง |
สัญญาอนุญาต | GPLv3 |
เว็บไซต์ | www |
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 | แปลกลับเป็นภาษาแอสเซมบลี |
อ้างอิง
- Brobecker, Joel (2020-10-24). "GDB 10.1 released!". สืบค้นเมื่อ 2020-10-24.
- ศัพท์คอมพิวเตอร์และเทคโนโลยีสารสนเทศ ฉบับราชบัณฑิตยสถาน (7 ed.). กรุงเทพฯ: นานมีบุ๊คส์. 2549. ISBN 9789749996485. Check date values in:
|date=
(help) - "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.
- "GDB Steering Committee". สืบค้นเมื่อ 2008-05-11.
- "GDB 7.0 Release Notes". สืบค้นเมื่อ 2011-11-28.
- Joel Brobecker (2014-07-29). "GDB 7.8 released!". สืบค้นเมื่อ 2014-07-30.
- "Howto: GDB Remote Serial Protocol: Writing a RSP Server" (PDF).
- "Implementing a remote stub".
- "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
- ที่ เวย์แบ็กแมชชีน (archived 2007-03-03)