GNU Debugger

Stabilní verze byla odhlášena 24. září 2022 . Existují neověřené změny v šablonách nebo .
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 .

Historie

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]

Historie vydání

Technické detaily

Funkce

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 ] .

Podpora multiplatformních a vestavěných systémů

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í.

Vzdálené ladě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.

Uživatelské rozhraní

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 .

Příklady příkazů

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

Příklad použití

GNU gdb 6.5 Copyright (C) 2006 Free Software Foundation, Inc. GDB je svobodný software, na který se vztahuje GNU General Public License, a vy jste vítáme vás při jeho změně a/nebo distribuci jeho kopií za určitých podmínek. Chcete-li zobrazit podmínky, zadejte „zobrazit kopírování“. Na GDB není absolutně žádná záruka. Podrobnosti zobrazíte zadáním „zobrazit záruku“. Tato GDB byla nakonfigurována jako „i486-slackware-linux“. (gdb) spustit Spouštěcí program: /home/sam/programming/crash Čtení symbolů ze sdíleného objektu přečtené z cílové paměti...hotovo. Zatížený systém dodal DSO na 0xc11000 Tento program předvede gdb Signál přijatý programem SIGSEGV, chyba segmentace. 0x08048428 ve funkci_2 (x=24) při crash.c:22 22 návrat *y; (gdb) upravit (gdb) shell gcc crash.c -o crash -gstabs+ (gdb) spustit Laděný program již byl spuštěn. Začít od začátku? (y nebo n) y varování: nelze zavřít "sdílený objekt načtený z cílové paměti": Soubor ve špatném formátu `/home/sam/programming/crash' se změnil; opětovné čtení symbolů. Spouštěcí program: /home/sam/programming/crash Čtení symbolů ze sdíleného objektu přečtené z cílové paměti...hotovo. Zatížený systém dodal DSO na 0xa3e000 Tento program předvede gdb 24 Program normálně skončil. (gdb) ukončit

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.

Nevýhody

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.

Poznámky

  1. Přednáška Richarda Stallmana na Royal Institute of Technology, Švédsko (1986-10-30)
  2. Vydán Brobecker J. GDB 12.1!  (anglicky) – 2022.
  3. 1 2 3 4 5 Adresář svobodného softwaru
  4. Řídící výbor GDB (odkaz není k dispozici) . Získáno 11. května 2008. Archivováno z originálu 5. srpna 2012. 
  5. Novinky GDB . Získáno 7. července 2012. Archivováno z originálu dne 23. července 2012.
  6. gdb Internals - Symbol Handling . Staženo 15. května 2020. Archivováno z originálu dne 22. září 2020.
  7. Vzdálené ladění pomocí GDB a GDBserveru . Získáno 9. května 2022. Archivováno z originálu dne 12. srpna 2021.
  8. Eric Raymond: The Art of Unix Programming ISBN 5-8459-0791-8

Literatura

Odkazy