GDB (även känd som GNU Project debugger) är en öppen källkod och gratis kommandoradsprogramvara som gör det möjligt för användare och utvecklare att se vad som händer "inuti" ett annat program, medan det är exekverad, eller varför en applikation kraschar vid en viss punkt.
Funktioner i ett ögonkast
Huvudfunktionerna inkluderar fyra olika tekniker för att hjälpa utvecklare att fånga fel i akten, starta en applikation och ange vad som kan påverka sitt beteende, stoppa ett program på angivna villkor, granska loggarna när programmet kraschade, gradvis ändra saker i ett program för att experimentera med att korrigera effekterna av ett problem och fortsätta genom att lära sig om en annan bugg. Den stöder också felsökning av program som skrivs i ett brett utbud av programmeringsspråk, inklusive C, C ++, Pascal , Ada, Objective-C och många andra.
Det är en kommandoradsapplikation
GNU Project debugger är en testamente som alltid är en kommandoradsapplikation. För att använda det måste du köra & ldquo; gdb & rdquo; kommandot i en terminalemulator, kör sedan & ldquo; help & rdquo; kommandot (utan citat) en gdb-prompten. Dessutom kan du också skriva & ldquo; hjälp alla & rdquo; kommando för att visa en lista över alla kommandon, skriv "hjälp" följt av kommandonamn för att visa fullständig dokumentation, skriv "hjälp" följt av ett klassnamn för att visa en lista med kommandon i den klassen, för att skriva "apropos word" för att söka för kommandon relaterade till "word".
Lista över klasser av kommandon
Efter att du har skrivit & ldquo; hjälp & rdquo; kommando som beskrivs ovan kommer du att se en lista över klasser av kommandon, inklusive aliaser (visar alias av andra kommandon), brytpunkter (gör att programmet stannar vid vissa punkter), data (för att granska data), filer (för att granska filer) (för att undersöka stacken), status (för statusförfrågningar), support (för supportfunktioner), spårpunkter (för att spåra programkörning utan stoppa programmet) och användardefinierade (användardefinierade kommandon).
Stödda hårdvaruplattformar och operativsystem
GDB har designats från offset för att vara en plattformsapplikation, som körs på vanliga operativsystem som Microsoft Windows och några av de mest populära Linux / UNIX-varianterna. Den stöds på både 32-bitars och 64-bitars hårdvaruplattformar.
Vad är nytt i den här utgåvan:
- PR gdb / 22824 (vilseledande beskrivning av ny rbreak Python-funktion i GDB 8.1 NEWS-fil)
- PR gdb / 22849 (ctrl-c fungerar inte i fjärrkontrollen)
- PR gdb / 22907 ([Regression] gdbserver fungerar inte med binära filer endast filnamn)
- PR gdb / 23028 (inkonsekvent demontering av vcvtpd2dq)
- PR gdb / 23053 (Fix -D_GLIBCXX_DEBUG gdb-add-index regression)
- PR gdb / 23127 ([AArch64] GDB kan inte användas för debugging-programvara som använder höga virtuella adresser)
- PR-server / 23158 (gdbserver fungerar inte längre på Windows)
- PR-brytpunkter / 23210 ([8.1 / 8.2-regression] Bogus-brytpunktsadressen justerad från 0xf7fe7dd3 till 0xfffffffff7fe7dd3)
Vad är nytt i version 8.1:
- Brytpunkter på C + + -funktioner är nu standardinställda ("wild" matchning);
- Stöd för att infoga brytpunkter på funktioner markerade med C ++ ABI-taggar;
- Target flytande punkt aritmetisk emulering under expressionsevaluering (kräver MPFR 3.1 eller senare);
- Olika Python Scripting förbättringar;
- Förbättrat ruststöd; I synnerhet kan Trait-objekt nu inspekteras vid felsökning av Rust-kod;
- GDB gör inte längre antaganden om typ av symboler utan felsökningsinformation för att undvika att producera felaktiga och ofta förvirrande resultat;
- Kommandona "aktivera" och "inaktivera" accepterar nu en rad punktpunkter,
- Nytt "starti" -kommando för att starta programmet vid den första instruktionen,
- Kommandot "rbreak" för att infoga ett antal brytpunkter via ett vanligt uttrycksmönster (kräver Python);
- Kommandot 'ptype' stöder nu att skriva ut förskjutningen och storleken på fälten i en struktur;
- Kommandot "gcore" stöder nu att dumpa alla minnesmappingsalternativ ('-a' kommandoradsalternativ);
- Nya genvägar för TUI Single-Key-läget: 'i' för stepi och 'o' for nexti;
- Förbättringar av GDBserver:
- Stöd för överföring av miljövariabler till GDBserver;
- Stöd för att starta sämre processer med en angiven första arbetsmapp;
- På Unix-system, stöd för globbing expansion och variabel substitution av argumenter med sämre kommandoraden;
- Olika kompletteringsförbättringar;
- Kommandot som används för att kompilera och injicera kod med kommandot "kompilera" kan nu konfigureras;
- Ny "--readnever" kommandoradsalternativ för att påskynda uppstarten av GDB när felsökningsinformation inte behövs,
- Stöd för följande nya inbyggda konfigurationer:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / arm (arm * - * - freebsd *);
- Stöd till följande nya mål:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / arm (arm * - * - freebsd *);
- OpenRISC ELF (or1k * - * - elf)
- Ta bort support för följande mål och inbyggda konfigurationer:
- Solaris2 / x86 (jag? 86 - * - solaris2. [0-9]);
- Solaris2 / sparc (sparc * - * - solaris2. [0-9]);
Vad är nytt i version:
- Att bygga den här versionen av GDB kräver nu följande verktyg:
- En C ++ - 11 kompilator (till exempel GCC 4.8 eller senare);
- GNU gör version 3.81 eller senare.
- Ändringar i denna utgåva inkluderar:
- C ++: Stöd för rvalue referenser
- Förbättringar av Python-skript:
- Nya funktioner för att starta, stoppa och komma åt en pågående btrace-inspelning.
- Rvalue referensstöd i gdb.Type.
- GDB-kommandotolk:
- Användarkommandon accepterar nu ett obegränsat antal argument.
- Den "eval" kommandot expanderar nu användardefinierade argument.
- DWARF version 5 support
- (notera att indexet .debug_names inte stöds ännu).
- Förbättringar av GDB / MI:
- Kommandot Newfile-list-shared-libraries för att lista de delade biblioteken i programmet.
- Kommandot New-Target-Flash-erase, för att radera flashminne.
- Stöd för inbyggda FreeBSD / mips (mips * - * - freebsd)
- Stöd till följande mål:
- Synopsys ARC (båg * - * - elf32)
- FreeBSD / mips (mips * - * - freebsd)
- Diverse förbättringar:
- Kommandoradsomvandling stöds nu på MS-Windows-värdar.
- Stöd för trådnamn på MS-Windows.
- Stöd för PKU-registret på GNU / Linux.
- Stöd för målbeskrivningar på sparc32 och sparc64.
- Nytt GDB / CLI-kommando för att radera flashminne
- rdrand och rdseed instruktioner för rekord / återuppspelning.
- Stöd för följande funktioner har tagits bort:
- Stöd för Java-program som kompilerats med gcj
- Stöd för följande konfigurationer:
- FreeBSD / alpha (alpha * - * - freebsd *)
- GNU / kFreeBSD / alpha (alfa * - * - kfreebsd * -gnu)
Vad är nytt i version 7.9.1:
- PR build / 18033 gdb / iq2000-tdep.c och gdb / compile / compile - *. c)
- PR build / 18298 ("compile" -kommandot kan inte hitta kompilatorn om verktyg som är konfigurerade med triplet istället för fyrdubblad)
- PR tui / 18311 (Slumpmässig SEGV vid visning av register i TUI-läge)
- PR python / 18299 (undantag när du registrerar en global pretty-skrivare i verbalt läge)
- PR python / 18066 (argumentet "ord" verkar brutet i Command.complete (text, ord))
- PR pascal / 17815 (Fix pascal beteende för klassfält med testcase)
- PR python / 18285 (ptype expr-med-xmethod orsakar SEGV)
Vad är nytt i version 7.9:
- Python-skriptförbättringar.
- Källkodsberäkning och injektion till det sämre.
- Nya kommandon, alternativ, bekvämlighetsvariabler / alternativ.
- MIPS SDE stöd (mips * -sde * -elf *).
- Bättre hantering av signaler när debugging-gängade program.
Vad är nytt i version 7.8.2:
- PR-symtab / 17642 -error: resolve_dynamic_struct: Anmälan `TYPE_NFIELDS (typ) & gt; 0 misslyckades.)
- PR binutils / 17677 (_bfd_elf_get_synthetic_symtab körs i O (n ^ 2) komplexitet)
- PR gdb / 16215 (SPARC: kan inte beräkna CFA för denna ram)
- PR gdb / 17525 (mål-async: brytpunkts-kommandon som inte körs när programmet körs från -x-skript)
- PR cli / 17828 ([7,8 regression] -batch -ex r bryter terminal)
Vad är nytt i version 7.8.1:
- PR python / 17364 (Behöver bättre skrivarnamn i bound_registers.py)
- PR build / 17104 (CFLAGS = "-Wall -Wextra" gdb / confgure - med-babeltrace misslyckas)
- PR gdb / 17345 (babeltrace (1.1.2 och senare) klagar över ctf-data genererade av GDB)
- PR build / 17298 (gcore: Kunde inte få register: Ingen sådan process)
- PR python / 17342 (Xmethod Python är inte Python 3 kompatibel)
- PR python / 17355 (Crash on Python ramfilter med oläslig arg)
- PR guile / 17367 (beräkning av guild-sökväg fel när pkg-config-skript levereras som arg till -med-skur)
- PR gdb / 17247 (gdb fryser på multi threaded app)
- PR gdb / 17347 (Regression: GDB stoppad vid körning med bifogad process)
- PR gdb / 17407 (Regression för Linux vDSO-läsning)
- PR-server / 17457 (aarch64 / gdbserver: Visning av felaktiga svängpunkter)
- PR-server / 17487 (state-> dr_control_mirror == 0 misslyckad påstående i gdbserver på Windows)
- PR gdb / 17472 (med anteckningar, inmatning medan körning i förgrunden kraschar readline / gdb)
- PR gdb / 17471 (upprepa ett bakgrundskommando gör det förgrundsrikt)
- PR cli / 17300 (krasch i non-stop-läge med fortsätt -a & (readline_callback_read_char () kallas utan hanterare!))
- PR python / 17372 (python hänger vid visning av hjälp ())
- PR python / 17408 (../../gdb/infrun.c:5256: internt fel: switch_back_to_stepped_thread: Anmälan `! schema_applies (1) 'misslyckades.)
Vad är nytt i version 7.8:
- Guile scripting support.
- Python-skriptförbättringar.
- Nya kommandon, alternativ, bekvämlighetsvariabler / alternativ.
- Förbättringar av fjärrprotokoll och GDBserver.
- Nya målkonfigurationer (PowerPC64 GNU / Linux little endian).
- förbättringar av btrace.
- Automatiskt stöd för ISO C99-variabellängd.
- "Jämför-sektionerna" Kommandot fungerar nu på alla mål.
- Den "inriktade" nativa " kommandot ansluter nu till det inhemska målet.
Vad är nytt i version 7.7:
- Förbättrad Python-skriptsupport.
- Några C ++ förbättringar.
- Nya kommandon, alternativ, bekvämlighetsvariabler / alternativ.
- Flera GDB / MI nya kommandon och förbättringar.
- Förbättringar av fjärrprotokoll och GDBserver.
- Nya målkonfigurationer (Nios II, TI MSP430).
- GDB Windows x64 avvecklar datastöd.
- SystemTap SDT analyserar stöd på AArch64 GNU / Linux.
- Stöd för CTF (Common Trace Format).
- Nya skript gcore och gdb-add-index.sh.
- Förbättrad arm * -linux rekord / replay support.
- Ta bort stöd för a.out föråldrade konfigurationer för NetBSD och OpenBSD. ELF-varianter av dessa konfigurationer hålls stödda.
- Den "set | show remotebaud" kommandon avlägsnas till förmån för "visa | visa seriell baud".
Vad är nytt i version 7.6.2:
- PR-brytpunkt / 16251 gaffel)
- PR gdb / 16303 (GDB 7.6.1 fungerar inte med binutils 2.24 på MIPS16 och microMIPS)
Vad är nytt i version 7.6.1:
- PR tdep / 15420 (kan inte felsöka gängade program på nyare versioner av x86-solaris - Solaris 10, Update 10 eller senare)
- PR fjärrkontroll / 15455 (QTro fjärrpaket brutet)
- PR build / 15476 (Byggfel på grund av ofullständig enumtyp i utils.h)
- PR-server / 15594 (tls-support i 64x32 x86 gdbserver utökar inte adress till 64 bitar)
- PR-server / 15075 (dprintf inkräktar med "next")
- PR-server / 15434 (dprintf använder en synkron "fortsätt" även i non-stop-läge)
- PR tui / 14880 (i delade registerlayouter resulterar resulterande i påståendefel i värde.c)
- PR c ++ / 15519 (GDB 7.6 är 94x långsammare än GDB 7.5.1 med en viss kärnfil)
- PR gdb / 15837 (GDB skriver in värden för lokala variabler)
- PR gdb / 15415 (gdb löser symboliska länkar när man passerar argv [0])
- PR cli / 15603 (CTRL-C kan inte längre avbryta sämre)
- PR gdb / 15604 (gdbserver socket läckage 7.5 regression)
Vad är nytt i version 7.5:
- Gå till språkstöd.
- Nya mål (x32 ABI, microMIPS, Renesas RL78, HP OpenVMS ia64).
- Fler Python-skriptförbättringar.
- SDT (Static Defined Tracing) -prober stödjer SystemTap-sonder.
- Förbättringar av GDBserver (stdio-anslutningar, utvärdering av målsidan av brytpunktsförhållanden, förbättringar av fjärrprotokollen).
- Andra diverse förbättringar (möjligheten att sluta när ett delat bibliotek laddas / laddas, dynamiskt printf, etc.).
- Omvänd debugging på ARM.
- Den binära "gdbtui" har övergivits och kan inte längre byggas. Använd "gdb -tui" istället.
Vad är nytt i version 7.4:
- Dubbelartade linjespecs hanteras nu mer konsekvent.
- Ointressanta funktioner och filer kan nu hoppas över när du går med "hoppa över funktionen" och "hoppa över fil" kommandon.
- Kommandon för att ställa in och få maximal längdgräns för en fjärrmätarehårdpunkt för hårdvara har lagts till.
- Python-skriptningen förbättrades väldigt.
- Många andra förbättringar, buggfixar och allmänna ändringar gjordes.
Vad är nytt i version 7.1:
- Stöd för nya mål (inklusive en simulator):
- Xilinx MicroBlaze
- Renesas RX
- De stora nya funktionerna är:
- Felsökning av flera program, så att debuggeren kan styra mer än
- ett program inom samma GDB-session.
- Placera oberoende exekverbar (PIE) debugging.
- Det innehåller också många förbättringar och buggfixar, inklusive:
- Python support har utökats.
- C ++ support förbättringar (namnrymd, cast operatörer, buggfixar)
- Förbättringar av Tracepoint-stöd.
- Bearbeta rekordförbättringar (spara / återställ exekveringsloggen, maskinvara )
- klockans stöd).
- Fjärrprotokollförbättringar (Linux-kärnfelsökning, nya paket
- för stödetipsstöd)
Kommentarer hittades inte