GNU Debugger

Vakaa versio kirjattiin ulos 24.9.2022 . Malleissa tai malleissa on vahvistamattomia muutoksia .
GNU Debugger
Tyyppi debuggeri ja GNU-paketti [d]
Tekijä GNU projekti
Kehittäjä Yhteisö
Sisään kirjoitettu C ja kaavio
Käyttöjärjestelmä GNU/Linux [3] , BSD [3] , Microsoft Windows [3] ja macOS [3]
Käyttöliittymäkielet Englanti
Ensimmäinen painos 1986 [1]
uusin versio
Lisenssi GPL 3.0+ [3]
Verkkosivusto gnu.org/software/… ​(  englanti)
 Mediatiedostot Wikimedia Commonsissa

GNU Debugger  on kannettava GNU - projektin debuggeri , joka toimii monissa UNIX - tyyppisissä järjestelmissä ja voi korjata monia ohjelmointikieliä, mukaan lukien C , C++ , Free Pascal , FreeBASIC , Ada , Fortran ja Rust . GDB on ilmainen ohjelmisto , jolla on GPL -lisenssi .

Historia

Alunperin kirjoittanut Richard Stallman vuonna 1988 . Se perustui BSD - jakelun mukana tulleeseen DBX -debuggeriin . Vuodesta 1990 vuoteen 1993  _ projektia tuki John Gilmour ollessaan Cygnus Solutionsin palveluksessa . Kehitystä koordinoi tällä hetkellä Free Software Foundationin nimittämä GDB:n ohjauskomitea . [neljä]

Julkaisuhistoria

Tekniset tiedot

Ominaisuudet

GDB tarjoaa kattavat työkalut tietokoneohjelmien suorittamisen valvontaan ja ohjaukseen. Käyttäjä voi muuttaa ohjelmien sisäisiä muuttujia ja jopa kutsua toimintoja ohjelman normaalista käyttäytymisestä riippumatta. GDB voi korjata suoritettavia tiedostoja a.out- , COFF-muodossa (mukaan lukien Windows-suoritettavat tiedostot), ECOFF- , XCOFF- , ELF- , SOM- -, käyttää virheenkorjaustietoja stabs- , COFF- , ECOFF- , DWARF- , DWARF2- muodossa [6] . DWARF2-muoto tarjoaa parhaat virheenkorjausominaisuudet.

GDB:tä kehitetään aktiivisesti. Esimerkiksi versio 7.0 lisäsi tuen "käännettävälle virheenkorjaukselle", jonka avulla voit kelata suoritusprosessia taaksepäin nähdäksesi, mitä tapahtui. Myös versiossa 7.0 lisättiin Python -komentosarjan tuki .

Muita virheenkorjaustyökaluja on luotu toimimaan GDB:n kanssa, kuten muistivuotoilmaisimet.[ määritä ] .

Multiplatform- ja sulautettujen järjestelmien tuki

GDB voidaan kääntää tukemaan sovelluksia useille kohdealustoille ja vaihtaa niiden välillä virheenkorjausistunnon aikana. GDB:n ( 2003 ) tukemat prosessorit : Alpha , ARM , H8/300 , System/370 , System/390 , x86 ja x86-64 , IA-64 ( Itanium ), Motorola 68000 , MIPS , PA-RISC , PowerPC , SuperH , SPARC , VAX , A29K , ARC , AVR , CRIS , D10V , D30V , FR-30 , FR-V , Intel i960 , M32R , 68HC11 , Motorola 88000 , MCORE , MN10200 ja MCORE , SN10200 , -0KN103 , 0KN103 , 0KN103 , 0KN10 ,0 Z8000 (Uudemmat julkaisut eivät todennäköisesti tue joitain näistä.) Kohdealustoja, joilla GDB:tä ei voida ajaa, erityisesti sulautettuja järjestelmiä , voidaan tukea sisäänrakennetulla simulaattorilla ( ARM , AVR -prosessorit ) tai niille voidaan kääntää sovelluksia erityisiä rutiineja, jotka tarjoavat etävirheenkorjauksen kehittäjän tietokoneessa olevan GDB:n ohjauksessa. Virheenkorjauksen syöttötiedosto ei pääsääntöisesti ole flash-kelpoinen binääritiedosto, vaan tiedosto jossakin muodossa, joka tukee virheenkorjaustietoja, ensisijaisesti ELF, josta flash-binäärikoodi puretaan myöhemmin erityisillä apuohjelmilla.

Etävirheenkorjaus

Etävirheenkorjauksessa GDB ajetaan yhdellä koneella ja virheenkorjattava ohjelma toisessa. Viestintä tapahtuu erityisen protokollan mukaisesti sarjaportin tai TCP / IP:n kautta. Protokolla vuorovaikutukseen debuggerin kanssa on GDB-kohtainen, mutta tarvittavien aliohjelmien lähdekoodi sisältyy virheenkorjausarkistoon. Vaihtoehtoisesti GDB-paketin gdbserver [7] -ohjelma, joka käyttää samaa protokollaa, voidaan ajaa kohdealustalla suorittamaan matalan tason toimintoja, kuten keskeytyspisteiden asettaminen ja pääsy rekistereihin ja muistiin.

Samaa tilaa käytetään vuorovaikutuksessa sisäänrakennetun Linux-ytimen virheenkorjausohjelman KGDB kanssa. Sen avulla kehittäjä voi korjata ytimen virheitä tavallisen ohjelman tavoin: asettaa keskeytyskohtia, astua koodin läpi, tarkastella muuttujia. Sisäänrakennettu debuggeri vaatii kaksi konetta, jotka on kytketty Ethernetin tai sarjakaapelin kautta, joista toisessa on GDB ja toisessa ytimen virheenkorjaus.

Käyttöliittymä

Johtavien FSF -kehittäjien ideologian [8] mukaisesti GDB tarjoaa oman graafisen käyttöliittymänsä sijaan mahdollisuuden muodostaa yhteyden ulkoisiin IDE :ihin , jotka ohjaavat graafisia kuoria tai käyttävät konsolin vakiotekstirajapintaa. Voit liittää ulkoisiin ohjelmiin käyttämällä tekstimerkkijonokieltä (kuten tehtiin DDD -kuoren ensimmäisissä versioissa ), tekstinohjauskieltä tai Python-kielengdb/mi käyttöliittymää .

Emacsiin luotiin liitännät, kuten DDD , cgdb , GDBtk/Insight ja "GUD-tila" . IDE :t , jotka voivat olla vuorovaikutuksessa GDB:n kanssa, ovat Code::Blocks , Qt Creator , KDevelop , Eclipse , NetBeans , Lazarus , Geany .

Esimerkkejä komentoista

gdb ohjelma virheenkorjaus ohjelmassa "ohjelma" (komentotulkista)
katkaista pää aseta keskeytyspiste päälaitteeseen
ajaa -v Suorita ladattu ohjelma -v-vaihtoehdolla
bt backtrace (jos ohjelma kaatuu)
tietorekisterit näytä kaikki rekisterit
purkaa $pc-32, $pc+32 purkaa koodi
purkaa pää purkaa päätoiminto
set disassembly-maku intel näytä assembler-komennot intel-syntaksissa

Käyttöesimerkki

GNU gdb 6.5 Tekijänoikeus (C) 2006 Free Software Foundation, Inc. GDB on ilmainen ohjelmisto, joka kuuluu GNU General Public License -lisenssin piiriin, ja sinä olet tervetuloa muuttamaan sitä ja/tai jakamaan kopioita siitä tietyin edellytyksin. Näet ehdot kirjoittamalla "näytä kopiointi". GDB:lle ei ole minkäänlaista takuuta. Kirjoita "näytä takuu" saadaksesi lisätietoja. Tämä GDB määritettiin nimellä "i486-slackware-linux". (gdb) ajaa Ohjelman käynnistys: /home/sam/programming/crash Symbolien lukeminen jaetusta objektista luettu kohdemuistista...valmis. Ladattu järjestelmä toimitti DSO:lla 0xc11000 Tämä ohjelma näyttää gdb Ohjelma vastaanotti signaalin SIGSEGV, segmentointivika. 0x08048428 funktiossa_2 (x=24) osoitteessa crash.c:22 22 paluu *y; (gdb) muokkaa (gdb) shell gcc crash.c -o crash -gstabs+ (gdb) ajaa Virheenkorjausohjelma on jo aloitettu. Aloitetaanko alusta? (y tai n) y varoitus: "Jaettu objekti luettu kohdemuistista" ei voi sulkea: Tiedosto väärässä muodossa `/home/sam/programming/crash' on muuttunut; symbolien uudelleen lukeminen. Ohjelman käynnistys: /home/sam/programming/crash Symbolien lukeminen jaetusta objektista luettu kohdemuistista...valmis. Ladattu järjestelmä toimitti DSO:lla 0xa3e000 Tämä ohjelma näyttää gdb 24 Ohjelma poistui normaalisti. (gdb) lopeta

Kun segmentointivirheen syy on löydetty, ohjelmaa muokataan ja virhe korjataan. Korjattu ohjelma rakennetaan uudelleen GCC :llä ja ajetaan.

Haitat

GDB:hen sisältyvät sulautetut järjestelmäsimulaattorit, erityisesti AVR -alustalle , voivat tukea vain prosessorin ydintä, mutta eivät ohjaimen oheislaitteita.

Muistiinpanot

  1. Richard Stallman luento Royal Institute of Technologyssa, Ruotsissa (1986-10-30)
  2. Brobecker J. GDB 12.1 julkaistu!  (englanniksi) - 2022.
  3. 1 2 3 4 5 Free Software Directory
  4. GDB:n ohjauskomitea (linkki ei saatavilla) . Haettu 11. toukokuuta 2008. Arkistoitu alkuperäisestä 5. elokuuta 2012. 
  5. GDB-uutiset . Haettu 7. heinäkuuta 2012. Arkistoitu alkuperäisestä 23. heinäkuuta 2012.
  6. gdb-sisäosat - Symbolien käsittely . Haettu 15. toukokuuta 2020. Arkistoitu alkuperäisestä 22. syyskuuta 2020.
  7. Etävirheenkorjaus GDB:n ja GDBserverin avulla . Haettu 9. toukokuuta 2022. Arkistoitu alkuperäisestä 12. elokuuta 2021.
  8. Eric Raymond: Unix-ohjelmoinnin taito ISBN 5-8459-0791-8

Kirjallisuus

Linkit