ลิงก์ข้ามภาษาในบทความนี้ มีไว้ให้ผู้อ่านและผู้ร่วมแก้ไขบทความศึกษาเพิ่มเติมโดยสะดวก เนื่องจากวิกิพีเดียภาษาไทยยังไม่มีบทความดังกล่าว กระนั้น ควรรีบสร้างเป็นบทความโดยเร็วที่สุด |
โปรแกรมตรวจแก้จุดบกพร่องกนู หรือ GNU Debugger นิยมเรียกย่อ ๆ ว่า GDB เป็นโปรแกรมของโครงการกนู ทำงานบนระบบปฏิบัติการแบบยูนิกซ์ สนับสนุนภาษาต่าง ๆ เช่น ภาษาซี, ซีพลัสพลัส, เอดา และ ฟอร์แทรน เป็นต้น
นักพัฒนา | |
---|---|
วันที่เปิดตัว | 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 .
- "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
- ที่ เวย์แบ็กแมชชีน (เก็บถาวร 2007-03-03)
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
lingkkhamphasa inbthkhwamni miiwihphuxanaelaphurwmaekikhbthkhwamsuksaephimetimodysadwk enuxngcakwikiphiediyphasaithyyngimmibthkhwamdngklaw krann khwrribsrangepnbthkhwamodyerwthisud opraekrmtrwcaekcudbkphrxngknu hrux GNU Debugger niymeriykyx wa GDB epnopraekrmkhxngokhrngkarknu thanganbnrabbptibtikaraebbyuniks snbsnunphasatang echn phasasi siphlsphls exda aela fxraethrn epntnopraekrmtrwcaekcudbkphrxngknunkphthnawnthiepidtw1986 38 pithiaelw 1986 runesthiyr10 1 24 tulakhm 2020 3 pikxn 2020 10 24 thiekbkhxmulsourceware wbr org wbr git wbr binutils gdb wbr gitphasathiekhiynphasasirabbptibtikaryuniks winodwspraephthopraekrmtrwcaekcudbkphrxngsyyaxnuyatGPLv3ewbistwww wbr gnu wbr org wbr software wbr gdb GDB thanganinrabbbrrthdkhasng phuichtxngsngnganodykarphimphkhasng aetthahaktxngkarswntxprasankrafikkbphuich ksamarththaidodykarthanganphanopraekrmfrxntexnd frontend echn opraekrm DDD Data Display Debugger sungcaiperiyk GDB xikthihnungprawtiGDB erimphthnaodyrichard stxlaemn emux ph s 2529 ephuxihepnswnhnungkhxngrabbknu hlngcakthiekhaphthna GNU Emacs cnmikhwamesthiyrinradbthinaphxic aenwkhwamkhidkhxng GDB idmacak DBX sungepnopraekrmdibkekxr thimakbrabbyuniks biexsdi pccubn GDB duaelody GDB Steering Committee sungepnkhnakrrmkarthitngody mulnithisxftaewresri FSF raylaexiydthangethkhnikhkhunsmbti GDB prakxbdwykhunsmbtimakmaysahrbkartidtamaelaaekikhkarthangankhxngopraekrmkhxmphiwetxr phuichsamarthtrwcsxbaelaaekikhkhakhxngtwaeprphayinkhxngopraekrm aelaaemaeteriykichfngkchnodyimkhunkbphvtikrrmpktikhxngopraekrm opressesxrepahmay GDB tngaetpi ph s 2546 prakxbdwy Alpha ARM AVR H8 300 Altera Nios Nios II System 370 System 390 X86 aelaswnkhyay 64 bit X86 64 IA 64 Itanium Motorola 68000 MIPS PA RISC PowerPC SuperH SPARC aela VAX aelaopressesxrepahmaythiepnthirucknxyxikhlayrun GDB yngkhngphthnaxyangtxenuxng odykhunsmbtiihmkhxngewxrchn 7 0 nnrxngrbskhriptphasaiphthxn aelaskhript GNU Guile inewxrchn 7 8 rwmthngkarsnbsnun kardibkaebbyxnklbid sungxnuyatihesschnkardibkyxnklbipid ehmuxnkbkaryxnopraekrmthilmehlwephuxduwaekidpyhaxairkhun kartrwcaekcudbkphrxngcakrayaikl GDB naesnxkarthanganaebb rayaikl thimkichemuxthakartrwcaekcudbkphrxnginrabbfngtw karthanganrayaiklkhuxemux GDB thanganbnekhruxnghnungaelaopraekrmthikalngdibkcathanganbnekhruxngxun GDB samarthsuxsarkbopraekrmtnthangrayaiklthiekhaicophrothkhxlkhxng GDB phanchxngthangsuxsarxnukrmhruxophrothkhxl TCP IP opraekrmtnthangrayaiklsamarthsrangkhunidodykarechuxmoyngipyngiflinekhruxngtnthangthiehmaasmsungsnbsnun GDB aelaidephimkhxmulophrothkhxlkarsuxsarmayngekhruxngplaythang hruxkarich gdbserver ksamarthichephuxdibkopraekrmcakrayaiklid odyimcaepntxngepliynaeplngopraekrmtnthangaetxyangid nxkcakniyngsamarthich KGDB ephuxdibkkarrnlinuks ekhxrenl inradbsxrsdwy GDB sungdwy KGDB phuphthnaekhxrenlsamarthdibkekhxrenlidinlksnaediywkbkardibkopraekrmaexpphliekhchn thaihepnipidthicawangebrkphxytinekhxrenl aelwsngkarthanganaelasngekttwaepr bnsthaptykrrmopressesxrthimiricisetxrsahrbdibkhardaewr cudtrwcsxbsamarthtngkhacakcudthrikekxrebrkphxyt sungkahndtaaehnngkhxnghnwykhwamcathirabuthukeriykichnganhruxekhathung ody KGDB txngkarekhruxngephimetimsahrbthicaechuxmtxkbekhruxngephuxthakardibkodyichsayekhebilxnukrm hruxxiethxrent sahrbinrabbptibtikarfribiexsdi samarthdibkidodyichkarekhathunghnwykhwamcaodytrng DMA phanifriwrtwxyangkhxngkhasnggdb program dibkopraekrm cakyuniksechll run v rnopraekrmepahmaydwykhathikahndbt dibkyxnklb inkrniopraekrmlmehlw info registers dmphricisetxrthnghmddisas pc 32 pc 32 aeplklbepnphasaaexsesmblixangxingBrobecker Joel 2020 10 24 GDB 10 1 released subkhnemux 2020 10 24 sphthkhxmphiwetxraelaethkhonolyisarsneths chbbrachbnthitysthan 7 ed krungethph nanmibukhs 2549 ISBN 9789749996485 Richard Stallman lecture at the Royal Institute of Technology Sweden 1986 10 30 subkhnemux 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 subkhnemux 2008 05 11 GDB 7 0 Release Notes subkhnemux 2011 11 28 Joel Brobecker 2014 07 29 GDB 7 8 released subkhnemux 2014 07 30 Howto GDB Remote Serial Protocol Writing a RSP Server PDF Implementing a remote stub Kernel debugging with Dcons ewbist GDB subkhnemux 2008 06 21 aehlngkhxmulxunwikimiediykhxmmxnsmisuxthiekiywkhxngkb opraekrmtrwcaekcudbkphrxngknu ewbistthangkar UltraGDB Visual C C Debugging with GDB on Windows and Linux 2017 12 12 thi ewyaebkaemchchin KGDB Linux Kernel Source Level Debuggerkhumux Richard M Stallman Roland Pesch Stan Shebs et al Debugging with GDB Free Software Foundation 2011 ISBN 978 0 9831592 3 0 thi ewyaebkaemchchin ekbthawr 2007 03 03