ข้ามไปเนื้อหา

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

จากวิกิพีเดีย สารานุกรมเสรี
(เปลี่ยนทางจาก GNU Debugger)
โปรแกรมตรวจแก้จุดบกพร่องกนู
นักพัฒนาGNU Project
วันที่เปิดตัว1986; 38 ปีที่แล้ว (1986)
รุ่นเสถียร
10.1[1] / 24 ตุลาคม 2020; 4 ปีก่อน (2020-10-24)
ที่เก็บข้อมูล
ภาษาที่เขียนภาษาซี
ระบบปฏิบัติการยูนิกซ์, วินโดวส์
ประเภทโปรแกรมตรวจแก้จุดบกพร่อง[2]
สัญญาอนุญาตGPLv3
เว็บไซต์www.gnu.org/software/gdb

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

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

ประวัติ

[แก้]

GDB เริ่มพัฒนาโดยริชาร์ด สตอลแมน เมื่อ พ.ศ. 2529 เพื่อให้เป็นส่วนหนึ่งของระบบกนู หลังจากที่เขาพัฒนา GNU Emacs จนมีความเสถียรในระดับที่น่าพอใจ[3] แนวความคิดของ GDB ได้มาจาก DBX ซึ่งเป็นโปรแกรมดีบักเกอร์ ที่มากับระบบยูนิกซ์ บีเอสดี

ปัจจุบัน GDB ดูแลโดย GDB Steering Committee ซึ่งเป็นคณะกรรมการที่ตั้งโดย มูลนิธิซอฟต์แวร์เสรี (FSF)[4]

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

[แก้]

คุณสมบัติ

[แก้]

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 นั้นรองรับสคริปต์ภาษาไพทอน[5] และสคริปต์ GNU Guile (ในเวอร์ชัน 7.8)[6] รวมทั้งการสนับสนุน "การดีบักแบบย้อนกลับได้" ซึ่งอนุญาตให้เซสชันการดีบักย้อนกลับไปได้ เหมือนกับการย้อนโปรแกรมที่ล้มเหลวเพื่อดูว่าเกิดปัญหาอะไรขึ้น

การตรวจแก้จุดบกพร่องจากระยะไกล

[แก้]

GDB นำเสนอการทำงานแบบ "ระยะไกล" ที่มักใช้เมื่อทำการตรวจแก้จุดบกพร่องในระบบฝังตัว การทำงานระยะไกลคือเมื่อ GDB ทำงานบนเครื่องหนึ่งและโปรแกรมที่กำลังดีบักจะทำงานบนเครื่องอื่น GDB สามารถสื่อสารกับโปรแกรมต้นทางระยะไกลที่เข้าใจโพรโทคอลของ GDB ผ่านช่องทางสื่อสารอนุกรมหรือโพรโทคอล TCP/IP[7] โปรแกรมต้นทางระยะไกลสามารถสร้างขึ้นได้โดยการเชื่อมโยงไปยังไฟล์ในเครื่องต้นทางที่เหมาะสมซึ่งสนับสนุน GDB และได้เพิ่มข้อมูลโพรโทคอลการสื่อสารมายังเครื่องปลายทาง[8] หรือการใช้ gdbserver ก็สามารถใช้เพื่อดีบักโปรแกรมจากระยะไกลได้ โดยไม่จำเป็นต้องเปลี่ยนแปลงโปรแกรมต้นทางแต่อย่างใด

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

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

[แก้]
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.
  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".

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

[แก้]

คู่มือ

[แก้]