GNU Debugger | |
---|---|
Typ | debugger a balíček GNU [d] |
Autor | projekt GNU |
Vývojář | společenství |
Zapsáno v | C a schéma |
Operační systém | GNU/Linux [3] , BSD [3] , Microsoft Windows [3] a macOS [3] |
Jazyky rozhraní | Angličtina |
První vydání | 1986 [1] |
Nejnovější verze | |
Licence | GPL 3.0+ [3] |
webová stránka | gnu.org/software/… ( anglicky) |
Mediální soubory na Wikimedia Commons |
GNU Debugger je přenosný debugger projektu GNU , který běží na mnoha systémech podobných UNIXu a dokáže ladit mnoho programovacích jazyků, včetně C , C++ , Free Pascal , FreeBASIC , Ada , Fortran a Rust . GDB je svobodný software licencovaný pod GPL .
Původně napsal v roce 1988 Richard Stallman . Byl založen na ladicím programu DBX , který byl dodán s distribucí BSD . Od roku 1990 do roku 1993_ projekt byl podporován Johnem Gilmourem , když byl v Cygnus Solutions . Vývoj v současnosti koordinuje řídící výbor GDB jmenovaný Free Software Foundation . [čtyři]
GDB nabízí rozsáhlé nástroje pro sledování a řízení provádění počítačových programů. Uživatel může měnit vnitřní proměnné programů a dokonce volat funkce bez ohledu na běžné chování programu. GDB umí ladit spustitelné soubory ve formátu a.out , COFF (včetně spustitelných souborů Windows), ECOFF , XCOFF , ELF , SOM , používat ladicí informace ve formátech stabs , COFF , ECOFF , DWARF , DWARF2 [6] . Formát DWARF2 poskytuje největší možnosti ladění.
GDB se aktivně rozvíjí. Například verze 7.0 přidala podporu pro „reverzibilní ladění“, která vám umožňuje přetočit proces provádění zpět, abyste viděli, co se stalo. Také ve verzi 7.0 byla přidána podpora pro skriptování v Pythonu .
Pro práci s GDB byly vytvořeny další ladicí nástroje, jako jsou detektory úniku paměti.[ specifikovat ] .
GDB lze zkompilovat pro podporu aplikací pro více cílových platforem a přepínat mezi nimi během relace ladění. Procesory podporované GDB ( 2003 ): Alpha , ARM , H8/300 , System/370 , System/390 , x86 a 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 , MN10203STORS , 6 _ Z8000 (Novější verze pravděpodobně některé z nich nebudou podporovat.) Cílové platformy, na kterých nelze GDB provozovat, zejména vestavěné systémy , lze podporovat pomocí vestavěného simulátoru ( procesory ARM , AVR ) nebo pro ně lze kompilovat aplikace pomocí speciální rutiny, které poskytují vzdálené ladění pod kontrolou GDB běžící na počítači vývojáře. Vstupním souborem pro ladění zpravidla není flashovatelný binární soubor, ale soubor v některém z formátů podporujících ladicí informace, především ELF, ze kterého je následně pomocí speciálních utilit extrahován binární kód pro flashování.
Při vzdáleném ladění je GDB spuštěn na jednom počítači a laděný program je spuštěn na jiném. Komunikace probíhá podle speciálního protokolu přes sériový port nebo TCP/IP. Protokol pro interakci s debuggerem je specifický pro GDB, ale zdrojový kód pro potřebné podprogramy je obsažen v archivu debuggeru. Alternativně lze na cílové platformě spustit program gdbserver [7] z balíku GDB používající stejný protokol pro provádění nízkoúrovňových funkcí, jako je nastavení bodů přerušení a přístup k registrům a paměti.
Stejný režim se používá k interakci s vestavěným ladicím programem linuxového jádra KGDB. S ním může vývojář ladit jádro jako normální program: nastavovat body přerušení, procházet kód, prohlížet proměnné. Vestavěný debugger vyžaduje dva počítače připojené přes Ethernet nebo sériový kabel, na jednom běží GDB a na druhém jádro, které se má ladit.
V souladu s ideologií předních vývojářů FSF [8] poskytuje GDB místo vlastního grafického uživatelského rozhraní možnost připojení k externím IDE , které ovládají grafické shelly nebo využívají standardní konzolové textové rozhraní. Pro rozhraní s externími programy můžete použít jazyk textového řetězce (jak tomu bylo v prvních verzích DDD shellu ), jazyk pro ovládání textu gdb/minebo rozhraní k jazyku Python .
Byla vytvořena rozhraní jako DDD , cgdb , GDBtk/Insight a "GUD mode" v Emacsu . IDE , která mohou interagovat s GDB, jsou Code::Blocks , Qt Creator , KDevelop , Eclipse , NetBeans , Lazarus , Geany .
program gdb | ladit program "program" (z příkazového shellu) |
---|---|
přerušit hlavní | nastavit bod přerušení na hlavní |
běh -v | spusťte stažený program s volbou -v |
bt | backtrace (v případě pádu programu) |
info registry | zobrazit všechny registry |
disass $ ks-32, $ ks+32 | rozebrat kód |
rozebrat hlavní | rozebrat hlavní funkci |
set demontáž-příchuť intel | zobrazit příkazy assembleru v syntaxi Intel |
Po zjištění příčiny chyby segmentace se program upraví, chyba se opraví. Opravený program je znovu vytvořen pomocí GCC a spuštěn.
Simulátory vestavěných systémů obsažené v GDB, zejména pro platformu AVR , mohou podporovat pouze jádro procesoru, nikoli však periferie řadiče.
Projekt GNU | ||
---|---|---|
Příběh | ||
licence |
| |
Software _ |
| |
Osobnosti |
| |
Další témata |
|