GDB (také známý jako GNU Project debugger) je open source a bezplatný software příkazového řádku, který umožňuje uživatelům i vývojářům vidět, co se děje uvnitř jiného programu. spuštěna nebo proč aplikace narazí na určitý bod.
Funkce na první pohled
Klíčové funkce zahrnují čtyři různé techniky, které pomáhají vývojářům zachytit chyby v aktu, spustit aplikaci a specifikovat vše, co by mohlo ovlivnit její chování, ukončit program za stanovených podmínek, prozkoumat protokoly při havárii aplikace, postupně měnit věci v program pro experimentování s korekcí efektů jednoho problému a pokračováním v učení se o další chybě. Podporuje také ladění programů psaných v široké škále programovacích jazyků, včetně C, C ++, Pascal , Ada, Objective-C a mnoho dalších.
Je to aplikace příkazového řádku
Debugger GNU Project je vždy aplikace příkazového řádku. Chcete-li jej používat, musíte spustit příkaz "gdb" příkaz v terminálovém emulátoru, poté spusťte "help" příkaz (bez uvozovek) a příkaz gdb. Navíc můžete také napsat "help all" příkaz pro zobrazení seznamu všech příkazů, zadejte příkaz "help", za kterým následuje název příkazu, zobrazí se kompletní dokumentace, zadejte příkaz "help", za kterým následuje název třídy, zobrazí se seznam příkazů v této třídě, zadejte "apropos slovo" pro příkazy týkající se "slov."
Seznam tříd příkazů
Po zadání nápovědy & rdquo; jak je to popsáno výše, uvidíte seznam tříd příkazů, včetně aliasů (zobrazuje aliasy jiných příkazů), body stop (v určitých bodech zastaví program), data (pro zkoumání dat), soubory (pro prohlížení souborů) , interní (příkazy údržby), obskurní (obtížné funkce), běh (pro spuštění programu), zásobník (pro kontrolu zásobníku), stav (pro dotazování stavu) zastavení programu) a uživatelem definované (uživatelem definované příkazy).
Podporované hardwarové platformy a operační systémy
GDB byl navržen z offsetu jako platformová aplikace běžící na běžných operačních systémech, jako je Microsoft Windows a některé z nejoblíbenějších variant Linux / UNIX. Je podporováno na 32bitových i 64bitových hardwarových platformách.
Co je nové v této verzi:
- PR gdb / 22824 (zavádějící popis nové funkce Python v souboru GDB 8.1 NEWS)
- PR gdb / 22849 (ctrl-c nefunguje v rozšířeném vzdáleném programu)
- PR gdb / 22907 ([Regrese] gdbserver nefunguje s binárními soubory pouze pro soubory)
- PR gdb / 23028 (nekonzistentní demontáž vcvtpd2dq)
- PR gdb / 23053 (Oprava -D_GLIBCXX_DEBUG regrese gdb-add-index)
- PR gdb / 23127 ([AArch64] GDB nelze použít pro ladění softwaru, který používá vysoké virtuální adresy)
- PR server / 23158 (gdbserver již v systému Windows nefunguje)
- PR zarážky / 23210 ([8.1 / 8.2 Regrese] Bogus adresa bodu přerušení nastavena z 0xf7fe7dd3 na 0xfffffffff7fe7dd3)
Co je nového ve verzi 8.1:
- Funkce C ++ jsou nyní ve výchozím nastavení nastaveny na všechny oblasti ("divoká");
- Podpora pro vložení zarážkových bodů na funkce označené značkami C ++ ABI;
- Cílení emulace s plovoucí desetinnou čárkou během vyhodnocování výrazů (vyžaduje MPFR 3.1 nebo novější);
- Různé vylepšení skriptování jazyka Python;
- Vylepšená podpora proti korozi; Obzvláště objekty Trait mohou být nyní kontrolovány při ladění kódu Rust;
- GDB už nepředstavuje předpoklady o typu symbolů bez informací o ladění, aby se vyhnuli chybným a často matoucím výsledkům;
- Příkazy "enable" a "disable" nyní akceptují řadu míst zarážky;
- Nový příkaz "start" pro spuštění programu při první instrukci;
- Nový příkaz "rbreak" pro vložení počtu zlomů pomocí vzorku regulárního výrazu (vyžaduje Python);
- Příkaz 'ptype' nyní podporuje tisk posunu a velikosti polí v struktuře
- Příkaz 'gcore' nyní podporuje odstranění všech mapování paměti ('-a' možnost příkazového řádku);
- Nové zkratky pro režim TUI s jedním klíčem: 'i' pro steppi a 'o' pro nexti;
- Vylepšení GDBserveru:
- Podpora přenosu proměnných prostředí na server GDB;
- Podpora spuštění nepatrných procesů s určeným počátečním pracovním adresářem
- Na systémech Unix podpora pro expanzi globberu a proměnnou náhradu dolních argumentů příkazového řádku
- Různá vylepšení dokončení;
- Příkaz použitý ke kompilaci a vstřikování kódu příkazem "kompilovat" je nyní konfigurovatelný;
- Nová volba příkazového řádku '--readnever' pro urychlení spouštění GDB, když nejsou potřeba informace o ladění;
- Podpora pro následující nové nativní konfigurace:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / rameno (rameno * - * - freebsd *);
- Podpora pro následující nové cíle:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / rameno (rameno * - * - freebsd *);
- OpenRISC ELF (nebo1k * - * - elf)
- Odstraněna podpora pro následující cíle a nativní konfigurace:
- Solaris2 / x86 (i? 86 - * - solaris2. [0-9])
- Solaris2 / sparc (sparc * - * - solaris2. [0-9]);
Co je nového ve verzi:
- Vytváření této verze GDB nyní vyžaduje následující nástroje:
- kompilátor C ++ - 11 (například GCC 4.8 nebo novější);
- GNU verze 3.81 nebo novější.
- Změny v tomto vydání zahrnují:
- C ++: Podpora referencí rvalu
- Vylepšení skriptování Pythonu:
- Nové funkce pro spuštění, zastavení a přístup k běžícímu záznamu btrace.
- Zhodnoťte referenční podporu v gdb.Type.
- GDB příkazy interpretu:
- Příkazy uživatele nyní přijímají neomezený počet argumentů.
- "Eval" příkaz nyní rozšiřuje uživatelsky definované argumenty.
- podpora DWARF verze 5
- (uvědomte si, že její .debug_names index není zatím podporován).
- Vylepšení GDB / MI:
- Příkaz new-list-shared-libraries pro zobrazení sdílených knihoven v programu.
- Nový příkaz -target-flash-erase pro vymazání paměti flash.
- Podpora nativní FreeBSD / mips (mips * - * - freebsd)
- Podpora pro následující cíle:
- Synopsys ARC (oblouk * - * - elf32)
- FreeBSD / mips (mips * - * - freebsd)
- Různá vylepšení:
- Přesměrování příkazového řádku je nyní podporováno na počítačích MS-Windows.
- Podpora názvů závitů na systému MS-Windows.
- Podpora registru PKU na GNU / Linux.
- Podpora popisů cílů na sparc32 a sparc64.
- Nový příkaz GDB / CLI k vymazání paměti flash
- Podpora záznamu / přehrávání pokynů rdrand a rdseed.
- Byla odstraněna podpora následujících funkcí:
- Podpora programů Java kompilovaných pomocí gcj
- Podpora pro následující konfigurace:
- FreeBSD / alfa (alfa * - * - freebsd *)
- GNU / kFreeBSD / alfa (alfa * - * - kfreebsd * -gnu)
- PR build / 18298 (příkaz "compile" nemůže nalézt kompilátor, pokud jsou nástroje konfigurovány s tripletem namísto čtyřnásobku)
- PR tui / 18311 (Náhodné SEGV při zobrazování registrů v režimu TUI)
- PR python / 18299 (výjimka při registraci globální hezké tiskárny v detailním režimu)
- PR python / 18066 (argument "slovo" vypadá v Command.complete (text, slovo)
- PR pascal / 17815 (Oprava chování pascalu pro pole třídy s testovacím kufrem)
- PR python / 18285 (ptype expr-with-xmethod způsobuje SEGV)
PR build / 18033 (Komentář ve stylu C ++ použitý v
gdb / iq2000-tdep.c a gdb / compile / compile - *. c)Co je nového ve verzi 7.9:
- Vylepšení skriptování Pythonu.
- Kompilace zdrojového kódu a vstřikování do nižších.
- Nové příkazy, možnosti, komfortní proměnné / možnosti.
- podpora MIPS SDE (mips * -sde * -elf *).
- Lepší zacházení se signály při ladění závitových programů.
Příspěvek ve verzi 7.8.2:
-error: resolve_dynamic_struct: Zadání "TYPE_NFIELDS (typ) & gt; 0" se nezdařilo.)Co je nového ve verzi 7.8.1:
- PR python / 17364 (Potřebujete lepší názvy tiskáren v bound_registers.py)
- PR sestavení / 17104 (CFLAGS = "-Wall -Wextra" gdb / confgure --with-babeltrace selže)
- PR gdb / 17345 (babeltrace (1.1.2 a novější) si stěžuje na data ctf generovaná GDB)
- PR build / 17298 (gcore: Nelze získat registru: Žádný takový proces)
- PR python / 17342 (Xmethod Python není kompatibilní s Pythonem 3)
- PR python / 17355 (Crash na rámcích filtru Python s nečitelným arg)
- PR guile / 17367 (výpočet cesty cechu je špatný, když pkg-config skript je dodáván jako arg to --with-guile)
- PR gdb / 17247 (gdb zmrazí aplikaci s více závitmi)
- PR gdb / 17347 (regrese: GDB se zastavil při běhu s připojeným procesem)
- PR gdb / 17407 (Regrese pro čtení vDSO v systému Linux)
- PR server / 17457 (aarch64 / gdbserver: zobrazení nesprávných pohyblivých bodů)
- PR server / 17487 (stav- & gt; dr_control_mirror == 0 se nepodařilo uplatnit v systému Windows gdbserver)
- PR gdb / 17472 (s poznámkami, vstup při spuštění v popředí havaruje readline / gdb)
- PR gdb / 17471 (opakování příkazu na pozadí je to popředí)
- PR cli / 17300 (selhání v režimu nonstop s pokračováním -a & (readline_callback_read_char () voláno bez psovoda!))
- PR python / 17372 (python visí při zobrazování nápovědy ())
- PR python / 17408 (../../gdb/infrun.c:5256: interní chyba: switch_back_to_stepped_thread: Zadání `! schedlock_applies (1) 'selhalo.)
Co je nového ve verzi 7.8:
- Vylepšení skriptování Pythonu.
- Nové příkazy, možnosti, komfortní proměnné / možnosti.
- Vylepšení vzdáleného protokolu a GDBserveru.
- Nové cílové konfigurace (PowerPC64 GNU / Linux malý endián).
- Vylepšení btrace.
- podpora automatických polí s proměnnou délkou ISO C99.
- "Porovnávací sekce" příkaz nyní pracuje na všech cílech.
- "Nativní cíl" příkaz se nyní připojí k nativnímu cíli.
Co je nového ve verzi 7.7:
- Rozšířená podpora skriptování Pythonu.
- Některé vylepšení jazyka C ++.
- Nové příkazy, možnosti, komfortní proměnné / možnosti.
- Několik nových příkazů a vylepšení GDB / MI.
- Vylepšení vzdáleného protokolu a GDBserveru.
- Nové cílené konfigurace (Nios II, TI MSP430).
- GDB Windows x64 zvětšuje podporu dat.
- Systémová podpora SDT podporuje na architektuře AArch64 GNU / Linux.
- Podpora CTF (Common Trace Format).
- Nové skripty gcore a gdb-add-index.sh
- Vylepšená podpora * -linux záznamu / přehrávání.
- Odstraněna podpora pro zastaralé konfigurace NetWD a OpenBSD a.out. Varianty ELF těchto konfigurací jsou podporovány.
- "Set | show remotebaud" příkazy jsou zastaralé ve prospěch "show | show serial baud".
Co je nového ve verzi 7.6.2:
- PR breakpoint / 16251 vidlice)
- PR gdb / 16303 (GDB 7.6.1 nepracuje s binutils 2.24 na MIPS16 a microMIPS)
Co je nového ve verzi 7.6.1:
- PR tdep / 15420 (Nelze ladit programy se závitem na novějších verzích x86-solaris - Solaris 10, Update 10 nebo novější)
- PR vzdálený / 15455 (poškozený vzdálený paket QTro)
- PR build / 15476 (Vytvoření chyby kvůli neúplnému enum typu v utils.h)
- PR server / 15594 (podpora tls v 64x32 x86 gdbserveru nerozšíří adresu na 64 bitů)
- PR server / 15075 (dprintf se vztahuje na "další")
- PR server / 15434 (dprintf používá synchronní 'pokračovat' i v režimu non-stop)
- PR tui / 14880 (v rozdělených rozvrženích registrů, výsledkem je selhání tvrzení v hodnotě.c)
- PR c ++ / 15519 (GDB 7.6 je 94x pomalejší než GDB 7.5.1 pomocí určitého jádrového souboru)
- PR gdb / 15837 (GDB vytiskne vstupní hodnoty pro lokální proměnné)
- PR gdb / 15415 (gdb řeší symbolické odkazy při průchodu argv [0])
- PR cli / 15603 (CTRL-C již nemůže přerušit méně)
- PR gdb / 15604 (regrese úniku zásuvky gdbserver 7,5)
Co je nového ve verzi 7.5:
- Podpora jazyka
- Nové cíle (x32 ABI, microMIPS, Renesas RL78, HP OpenVMS ia64).
- Další vylepšení skriptování jazyka Python
- Sondy SDT (Static Defined Tracking) podporují sondy SystemTap.
- Vylepšení GDBserveru (připojení stdio, vyhodnocení hraničních podmínek na straně cíle, vylepšení vzdálených protokolů).
- Další různá vylepšení (schopnost zastavit při načtení / vyřazení sdílené knihovny, dynamické printf apod.)
- Reverzní ladění na ARM.
- Binární "gdbtui" byl opuštěn a již nemůže být postaven. Použijte výraz "gdb-tui" místo toho.
Co je nového ve verzi 7.4:
- Neprostupné funkce a soubory mohou být nyní přeskočeny při kroku s funkcí "přeskočit" a "přeskočit soubor" příkazy.
- Byly přidány příkazy pro nastavení a získání maximálního limitu délky hardwarového hodinového bodu vzdáleného cíle.
- Python skriptování bylo obrovsky vylepšeno.
- Bylo provedeno mnoho dalších vylepšení, oprav a oprav.
Co je nového ve verzi 7.1:
- Podpora pro nové cíle (včetně simulátoru):
- Xilinx MicroBlaze
- Renesas RX
- Hlavní nové funkce jsou:
- Ladění více programů, což umožňuje ladicímu programu ovládat více než
- jeden program v rámci stejné relace GDB.
- Ladění spouštěných nezávislých spustitelných souborů (PIE).
- Obsahuje také mnoho vylepšení a oprav chyb, včetně:
- Podpora Pythonu byla rozšířena.
- Vylepšení podpory C ++ (jmenný prostor, operátoři obsazení, opravy chyb)
- Vylepšení podpory Tracepoint.
- Vylepšení záznamu procesu (uložení / obnovení protokolu výkonu, hardware )
- podpora hlídání)
- Vylepšení vzdálených protokolů (ladění jádra Linuxu, nové pakety )
- pro podporu tracepointu)
Komentáře nebyl nalezen