GNU Debugger

A stabil verziót 2022. szeptember 24-én nézték meg . Ellenőrizetlen változtatások vannak a sablonokban vagy a .
GNU Debugger
Típusú hibakereső és GNU csomag [d]
Szerző GNU projekt
Fejlesztő közösség
Beírva C és séma
Operációs rendszer GNU/Linux [3] , BSD [3] , Microsoft Windows [3] és macOS [3]
Interfész nyelvek angol
Első kiadás 1986 [1]
legújabb verzió
Engedély GPL 3.0+ [3]
Weboldal gnu.org/software/… ​(  angol)
 Médiafájlok a Wikimedia Commons oldalon

A GNU Debugger  egy hordozható GNU projekthibakereső , amely számos UNIX - szerű rendszeren fut, és számos programozási nyelv hibakeresésére képes, beleértve a C , C ++ , Free Pascal , FreeBASIC , Ada , Fortran és Rust . A GDB egy ingyenes szoftver , amelynek licence a GPL .

Történelem

Eredetileg 1988 - ban írta Richard Stallman . A BSD disztribúcióhoz mellékelt DBX hibakeresőn alapult . 1990 és 1993  között_ _ a projektet John Gilmour támogatta, miközben a Cygnus Solutions -nél dolgozott . A fejlesztést jelenleg a Free Software Foundation által kijelölt GDB Irányító Bizottság koordinálja . [négy]

Kiadási előzmények

Technikai részletek

Jellemzők

A GDB kiterjedt eszközöket kínál a számítógépes programok végrehajtásának felügyeletéhez és vezérléséhez. A felhasználó megváltoztathatja a programok belső változóit, sőt függvényeket is hívhat, függetlenül a program normál viselkedésétől. A GDB képes hibakeresni a végrehajtható fájlokat a.out , COFF formátumban (beleértve a Windows futtatható fájlokat is), ECOFF , XCOFF , ELF , SOM , debug információkat használhat stabs , COFF , ECOFF , DWARF , DWARF2 [6] formátumban . A DWARF2 formátum biztosítja a legnagyobb hibakeresési lehetőségeket.

A GDB-t aktívan fejlesztik. Például a 7.0-s verzió támogatja a "visszafordítható hibakeresést", amely lehetővé teszi a végrehajtási folyamat visszatekerését, hogy megnézze, mi történt. A 7.0-s verzióban a Python -szkriptek támogatása is hozzáadásra került .

Más hibakereső eszközöket hoztak létre a GDB-vel való együttműködéshez, például memóriaszivárgás-érzékelőket.[ adja meg ] .

Többplatformos és beágyazott rendszerek támogatása

A GDB lefordítható úgy, hogy támogassa az alkalmazásokat több célplatformhoz, és váltson közöttük egy hibakeresési munkamenet során. A GDB által támogatott processzorok ( 2003 ): Alpha , ARM , H8/300 , System/370 , System/390 , x86 és 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 és Story _ Z8000 (Az újabb kiadások ezek egy részét valószínűleg nem támogatják.) Azok a célplatformok, amelyeken a GDB nem futtatható, különösen a beágyazott rendszerek , a beépített szimulátor segítségével ( ARM , AVR processzorok ) támogathatók, vagy a hozzájuk tartozó alkalmazások fordíthatók speciális rutinok, amelyek távoli hibakeresést biztosítanak a fejlesztő számítógépén futó GDB irányítása alatt. A hibakeresés bemeneti fájlja általában nem egy flashelhető bináris fájl, hanem a hibakeresési információkat támogató formátumok egyikében található fájl, elsősorban az ELF, amelyből a flashing bináris kódját speciális segédprogramok segítségével utólag kivonják.

Távoli hibakeresés

Távoli hibakeresésnél a GDB az egyik gépen fut, a hibakeresés alatt álló program pedig egy másikon. A kommunikáció egy speciális protokoll szerint történik soros porton vagy TCP / IP-n keresztül. A hibakeresővel való interakciós protokoll a GDB-re jellemző, de a szükséges szubrutinok forráskódja megtalálható a hibakereső archívumában. Alternatív megoldásként a GDB csomagból ugyanazt a protokollt használó gdbserver [7] program futtatható a célplatformon alacsony szintű funkciók végrehajtására, például töréspontok beállítására, regiszterek és memória elérésére.

Ugyanezt a módot használják a beépített Linux kernel hibakereső KGDB-vel való interakcióhoz. Ezzel a fejlesztő úgy tudja hibakeresni a kernelt, mint egy normál program: töréspontokat állíthat be, átléphet a kódon, megtekintheti a változókat. A beépített hibakeresőhöz két Etherneten vagy soros kábelen keresztül csatlakoztatott gépre van szükség, amelyek közül az egyik a GDB-t, a másik pedig a kernelt futtatja a hibakereséshez.

Felhasználói felület

A vezető FSF fejlesztők ideológiájának megfelelően [8] a GDB saját grafikus felhasználói felülete helyett lehetőséget biztosít külső IDE -ekhez való csatlakozásra, amelyek grafikus héjakat vezérelnek, vagy szabványos konzol szöveges felületet használnak. A külső programokkal való interfészhez használhat szöveges karakterlánc-nyelvet (ahogyan a DDD shell első verzióiban tették ), egy szövegvezérlő nyelvet gdb/mivagy egy felületet a Python nyelvhez .

Olyan interfészek jöttek létre az Emacs -ben , mint a DDD , cgdb , GDBtk/Insight és "GUD mód" . A GDB-vel kölcsönhatásba lépő IDE -k : Code::Blocks , Qt Creator , KDevelop , Eclipse , NetBeans , Lazarus , Geany .

Parancspéldák

gdb program hibakeresés a "program" programban (a parancshéjból)
szünet fő állítson be egy töréspontot a mainon
futás -v futtassa a letöltött programot a -v kapcsolóval
bt visszakövetés (a program összeomlása esetén)
információs regiszterek minden regiszter megjelenítése
szétszedni $db-32, $db+32 szedje szét a kódot
szétszerelni fő szétszerelni a fő funkciót
set disassembly-flavor intel Az assembler parancsok megjelenítése intel szintaxisban

Használati példa

GNU gdb 6.5 Copyright (C) 2006 Free Software Foundation, Inc. A GDB egy ingyenes szoftver, amelyre a GNU General Public License vonatkozik, és Ön az bizonyos feltételek mellett módosíthatja és/vagy másolatokat terjeszthet róla. A feltételek megtekintéséhez írja be a "show copying" kifejezést. A GDB-re egyáltalán nincs garancia. A részletekért írja be, hogy „garancia megjelenítése”. Ez a GDB "i486-slackware-linux"-ként lett konfigurálva. (gdb) futni Program indítása: /home/sam/programming/crash Szimbólumok olvasása megosztott objektumból, célmemóriából olvasva... kész. A betöltött rendszer által biztosított DSO 0xc11000 Ez a program bemutatja a gdb-t Program vett jel SIGSEGV, Szegmentációs hiba. 0x08048428 a function_2-ben (x=24) a crash.c:22-ben 22 return *y; (gdb) szerkesztés (gdb) shell gcc crash.c -o összeomlik -gstabs+ (gdb) futni A hibakeresés alatt álló program már elindult. Kezdje elölről? (y vagy n) y figyelmeztetés: nem lehet bezárni "megosztott objektum beolvasása a célmemóriából": A fájl rossz formátumú A `/home/sam/programming/crash' megváltozott; szimbólumok újraolvasása. Program indítása: /home/sam/programming/crash Szimbólumok olvasása megosztott objektumból, célmemóriából olvasva... kész. A betöltött rendszer által biztosított DSO 0xa3e000 Ez a program bemutatja a gdb-t 24 A program normálisan kilépett. (gdb) kilép

A szegmentálási hiba okának megtalálása után a program szerkesztésre kerül, a hiba kijavításra kerül. A javított programot a GCC -vel újraépítjük és lefutjuk .

Hátrányok

A GDB-ben található beágyazott rendszerszimulátorok, különösen az AVR platformhoz , csak a processzormagot támogatják, a vezérlő perifériáit azonban nem.

Jegyzetek

  1. Richard Stallman előadás a svéd Királyi Műszaki Intézetben (1986-10-30)
  2. Megjelent a Brobecker J. GDB 12.1!  (angol) - 2022.
  3. 1 2 3 4 5 Ingyenes szoftverek könyvtára
  4. GDB Irányító Bizottság (a link nem elérhető) . Letöltve: 2008. május 11. Az eredetiből archiválva : 2012. augusztus 5.. 
  5. GDB News . Letöltve: 2012. július 7. Az eredetiből archiválva : 2012. július 23.
  6. gdb belsők - Szimbólumkezelés . Letöltve: 2020. május 15. Az eredetiből archiválva : 2020. szeptember 22.
  7. Távoli hibakeresés GDB-vel és GDBserverrel . Letöltve: 2022. május 9. Az eredetiből archiválva : 2021. augusztus 12.
  8. Eric Raymond: A Unix programozás művészete ISBN 5-8459-0791-8

Irodalom

Linkek