fbpx
วิกิพีเดีย

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

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

โปรแกรมตรวจแก้จุดบกพร่องกนู
ผู้พัฒนาGNU Project
วันที่เปิดตัว1986; 35 ปีที่แล้ว (1986)
รุ่นล่าสุด10.1 / 24 ตุลาคม 2020; 9 เดือนก่อน (2020-10-24)
เขียนบนภาษาซี
ระบบปฏิบัติการยูนิกซ์, วินโดวส์
ประเภทโปรแกรมตรวจแก้จุดบกพร่อง
สัญญาอนุญาตGPLv3
เว็บไซต์www.gnu.org/software/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. Check date values in: |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
  • KGDB: Linux Kernel Source Level Debugger

คู่มือ


โปรแกรมตรวจแก, ดบกพร, องกน, งก, ามภาษา, ในบทความน, ไว, ให, านและผ, วมแก, ไขบทความศ, กษาเพ, มเต, มโดยสะดวก, เน, องจากว, เด, ยภาษาไทยย, งไม, บทความด, งกล, าว, กระน, ควรร, บสร, างเป, นบทความโดยเร, วท, หร, debugger, ยมเร, ยกย, เป, นโปรแกรมด, กเกอร, ของโครงการกน, ท. lingkkhamphasa inbthkhwamni miiwihphuxanaelaphurwmaekikhbthkhwamsuksaephimetimodysadwk enuxngcakwikiphiediyphasaithyyngimmibthkhwamdngklaw krann khwrribsrangepnbthkhwamodyerwthisudopraekrmtrwcaekcudbkphrxngknu hrux GNU Debugger niymeriykyx wa GDB epnopraekrmdibkekxrkhxngokhrngkarknu thanganbnrabbptibtikaraebbyuniks snbsnunphasatang echn phasasi siphlsphls exda aela fxraethrn epntnopraekrmtrwcaekcudbkphrxngknuphuphthnaGNU Projectwnthiepidtw1986 35 pithiaelw 1986 runlasud10 1 1 24 tulakhm 2020 9 eduxnkxn 2020 10 24 ekhiynbnphasasirabbptibtikaryuniks winodwspraephthopraekrmtrwcaekcudbkphrxng 2 syyaxnuyatGPLv3ewbistwww wbr gnu wbr org wbr software wbr gdbGDB thanganinrabbbrrthdkhasng phuichtxngsngnganodykarphimphkhasng aetthahaktxngkarswntxprasankrafikkbphuich ksamarththaidodykarthanganphanopraekrmfrxntexnd frontend echn opraekrm DDD Data Display Debugger sungcaiperiyk GDB xikthihnung enuxha 1 prawti 2 raylaexiydthangethkhnikh 2 1 khunsmbti 2 2 kartrwcaekcudbkphrxngcakrayaikl 3 twxyangkhxngkhasng 4 xangxing 5 aehlngkhxmulxun 5 1 khumuxprawti aekikhGDB erimphthnaodyrichard stxlaemn emux ph s 2529 ephuxihepnswnhnungkhxngrabbknu hlngcakthiekhaphthna GNU Emacs cnmikhwamesthiyrinradbthinaphxic 3 aenwkhwamkhidkhxng GDB idmacak DBX sungepnopraekrmdibkekxr thimakbrabbyuniks biexsdipccubn GDB duaelody GDB Steering Committee sungepnkhnakrrmkarthitngody mulnithisxftaewresri FSF 4 raylaexiydthangethkhnikh aekikhkhunsmbti aekikh GDB prakxbdwykhunsmbtimakmaysahrbkartidtamaelaaekikhkarthangankhxngopraekrmkhxmphiwetxr phuichsamarthtrwcsxbaelaaekikhkhakhxngtwaeprphayinkhxngopraekrm aelaaemaeteriykichfngkchnodyimkhunkbphvtikrrmpktikhxngopraekrmopressesxrepahmay 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 aelaopressesxrepahmaythiepnthirucknxyxikhlayrunGDB yngkhngphthnaxyangtxenuxng odykhunsmbtiihmkhxngewxrchn 7 0 nnrxngrbskhriptphasaiphthxn 5 aelaskhript GNU Guile inewxrchn 7 8 6 rwmthngkarsnbsnun kardibkaebbyxnklbid sungxnuyatihesschnkardibkyxnklbipid ehmuxnkbkaryxnopraekrmthilmehlwephuxduwaekidpyhaxairkhun kartrwcaekcudbkphrxngcakrayaikl aekikh GDB naesnxkarthanganaebb rayaikl thimkichemuxthakartrwcaekcudbkphrxnginrabbfngtw karthanganrayaiklkhuxemux GDB thanganbnekhruxnghnungaelaopraekrmthikalngdibkcathanganbnekhruxngxun GDB samarthsuxsarkbopraekrmtnthangrayaiklthiekhaicophrothkhxlkhxng GDB phanchxngthangsuxsarxnukrmhruxophrothkhxl TCP IP 7 opraekrmtnthangrayaiklsamarthsrangkhunidodykarechuxmoyngipyngiflinekhruxngtnthangthiehmaasmsungsnbsnun GDB aelaidephimkhxmulophrothkhxlkarsuxsarmayngekhruxngplaythang 8 hruxkarich gdbserver ksamarthichephuxdibkopraekrmcakrayaiklid odyimcaepntxngepliynaeplngopraekrmtnthangaetxyangidnxkcakniyngsamarthich KGDB ephuxdibkkarrnlinuks ekhxrenl inradbsxrsdwy GDB sungdwy KGDB phuphthnaekhxrenlsamarthdibkekhxrenlidinlksnaediywkbkardibkopraekrmaexpphliekhchn thaihepnipidthicawangebrkphxytinekhxrenl aelwsngkarthanganaelasngekttwaepr bnsthaptykrrmopressesxrthimiricisetxrsahrbdibkhardaewr cudtrwcsxbsamarthtngkhacakcudthrikekxrebrkphxyt sungkahndtaaehnngkhxnghnwykhwamcathirabuthukeriykichnganhruxekhathung ody KGDB txngkarekhruxngephimetimsahrbthicaechuxmtxkbekhruxngephuxthakardibkodyichsayekhebilxnukrm hruxxiethxrent sahrbinrabbptibtikarfribiexsdi samarthdibkidodyichkarekhathunghnwykhwamcaodytrng DMA phanifriwr 9 twxyangkhxngkhasng aekikhgdb program dibkopraekrm cakyuniksechll run v rnopraekrmepahmaydwykhathikahndbt dibkyxnklb inkrniopraekrmlmehlw info registers dmphricisetxrthnghmddisas pc 32 pc 32 aeplklbepnphasaaexsesmblixangxing aekikh Brobecker Joel 2020 10 24 GDB 10 1 released subkhnemux 2020 10 24 sphthkhxmphiwetxraelaethkhonolyisarsneths chbbrachbnthitysthan 7 ed krungethph nanmibukhs 2549 ISBN 9789749996485 Check date values in date help 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 aehlngkhxmulxun aekikhkhxmmxns miphaphaelasuxekiywkb opraekrmtrwcaekcudbkphrxngknuewbistthangkar UltraGDB Visual C C Debugging with GDB on Windows and Linux KGDB Linux Kernel Source Level Debuggerkhumux aekikh Richard M Stallman Roland Pesch Stan Shebs et al Debugging with GDB Free Software Foundation 2011 ISBN 978 0 9831592 3 0 GDB Internals at the Wayback Machine archived 2007 03 03 ekhathungcak https th wikipedia org w index php title opraekrmtrwcaekcudbkphrxngknu amp oldid 9384203, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม