GDB (znany także jako Debugger Projektu GNU) to otwarte oprogramowanie z wolnym dostępem do wiersza poleceń, które pozwala użytkownikom i programistom zobaczyć, co dzieje się wewnątrz innego programu, podczas gdy wykonane lub dlaczego aplikacja ulega awarii w określonym punkcie.
Funkcje na pierwszy rzut oka
Najważniejsze cechy to cztery różne techniki, które pomogą programistom wykryć błędy w działaniu, uruchomić aplikację i określić wszystko, co może wpłynąć na jej zachowanie, sprawić, by program zatrzymywał się w określonych warunkach, sprawdzać dzienniki, gdy aplikacja uległa awarii, stopniowo zmieniać rzeczy. program do eksperymentowania z korektą efektów jednego problemu i kontynuowania nauki na temat innego błędu. Obsługuje także debugowanie programów napisanych w szerokim zakresie języków programowania, w tym C, C ++, Pascal , Ada, Objective-C i wiele innych.
Jest to aplikacja wiersza polecenia
Debugger Projektu GNU to zawsze będzie aplikacja wiersza poleceń. Aby go użyć, musisz uruchomić & bdquo; gdb & rdquo; polecenie w emulatorze terminala, a następnie wykonaj komendę & bdquo; help & rdquo; polecenie (bez cudzysłowów) a monit gdb. Ponadto możesz także wpisać & bdquo; help all & rdquo; Polecenie, aby wyświetlić listę wszystkich poleceń, wpisz "help", a następnie nazwę polecenia, aby wyświetlić pełną dokumentację, wpisz "help", a następnie nazwę klasy, aby wyświetlić listę poleceń w tej klasie, aby wpisać "słowo apropos" do wyszukiwania dla poleceń związanych z "słowem."
Lista klas poleceń
Po wpisaniu & bdquo; help & rdquo; polecenie opisane powyżej, pojawi się lista klas poleceń, w tym aliasy (wyświetla aliasy innych poleceń), punkty przerwania (powoduje zatrzymanie programu w określonych punktach), dane (do sprawdzania danych), pliki (do sprawdzania plików) , internals (polecenia konserwacyjne), niejasne (niejasne funkcje), działa (dla uruchomienia programu), stos (do zbadania stosu), status (dla zapytań o status), wsparcie (dla obiektów wsparcia), tracepoints (do śledzenia realizacji programu bez zatrzymanie programu) i zdefiniowane przez użytkownika (polecenia zdefiniowane przez użytkownika).
Obsługiwane platformy sprzętowe i systemy operacyjne
GDB został zaprojektowany z offsetu jako aplikacja wieloplatformowa, działająca w popularnych systemach operacyjnych, takich jak Microsoft Windows i niektóre z najbardziej popularnych wariantów systemu Linux / UNIX. Jest obsługiwany na 32-bitowych i 64-bitowych platformach sprzętowych.
Co nowego w tej wersji:
- PR gdb / 22824 (wprowadzający w błąd opis nowej funkcji Ryth Python w pliku GDB 8.1 NEWS)
- PR gdb / 22849 (ctrl-c nie działa w rozszerzonym-zdalnym)
- PR gdb / 22907 ([Regresja] gdbserver nie działa z plikami binarnymi tylko na podstawie nazwy pliku)
- PR gdb / 23028 (niespójne zdemontowanie vcvtpd2dq)
- PR gdb / 23053 (Fix -D_GLIBCXX_DEBUG regresja gdb-add-index)
- PR gdb / 23127 ([AArch64] GDB nie może być używany do debugowania oprogramowania używającego wysokich adresów wirtualnych)
- Serwer PR / 23158 (gdbserver nie działa już w systemie Windows)
- Punkty przerwania PR / 23210 ([8.1 / 8.2 Regresja] Adres punktu przerwania dostosowany od 0xf7fe7dd3 do 0xfffffffff7fe7dd3)
Co nowego w wersji 8.1:
- Punkty przerwania w funkcjach C ++ są teraz domyślnie ustawione na wszystkich zakresach ("dzikie" dopasowanie);
- Obsługa wstawiania punktów przerwania w funkcjach oznaczonych znacznikami ABI w języku C ++;
- Celowa emulacja arytmetyczna zmiennoprzecinkowa podczas oceny ekspresji (wymaga MPFR 3.1 lub nowszej);
- Różne ulepszenia skryptów w Pythonie;
- Lepsza obsługa rdzy; w szczególności obiekty Trait mogą być teraz sprawdzane podczas debugowania kodu Rust;
- GDB nie przyjmuje już założeń co do rodzaju symboli bez debugowania informacji, aby uniknąć tworzenia błędnych i często mylących wyników;
- Polecenia "włącz" i "wyłącz" teraz akceptują zakres punktów przerwania;
- Nowa komenda "starti" uruchamiająca program przy pierwszej instrukcji;
- Nowa komenda "rbreak" do wstawiania wielu punktów przerwania za pomocą wzorca regularnego wyrażenia (wymaga Pythona);
- Polecenie "ptype" obsługuje teraz drukowanie przesunięcia i rozmiaru pól w strukturze;
- Polecenie "gcore" obsługuje teraz odrzucanie wszystkich mapowań pamięci (opcja wiersza polecenia -a);
- Nowe skróty dla trybu pojedynczego klawisza TUI: "i" dla stepi i "o" dla nexti;
- Ulepszenia GDBserver:
- Obsługa przesyłania zmiennych środowiskowych do GDBserver;
- Wsparcie w uruchamianiu gorszych procesów za pomocą określonego początkowego katalogu roboczego;
- W systemach uniksowych obsługa globalizacji i zmienne zastępowanie niższych argumentów wiersza poleceń;
- Różne ulepszenia ukończenia;
- Komenda używana do kompilacji i wprowadzania kodu za pomocą polecenia "compile" jest teraz konfigurowalna;
- Nowa opcja wiersza polecenia "odśwież", aby przyspieszyć uruchamianie GDB, gdy debugowanie informacji nie jest potrzebne;
- Obsługa następujących nowych konfiguracji natywnych:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / ramię (ramię * - * - freebsd *);
- Obsługa następujących nowych celów:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / ramię (ramię * - * - freebsd *);
- OpenRISC ELF (or1k * - * - elf)
- Usunięto obsługę następujących obiektów docelowych i konfiguracji natywnych:
- Solaris2 / x86 (i? 86 - * - solaris2. [0-9]);
- Solaris2 / sparc (sparc * - * - solaris2. [0-9]);
Co nowego w wersji:
- Budowanie tej wersji GDB wymaga teraz następujących narzędzi:
- Kompilator C ++ - 11 (na przykład GCC 4.8 lub nowszy);
- GNU make version 3.81 or later.
- Zmiany w tym wydaniu obejmują:
- C ++: Obsługa odwołań rvalue
- Ulepszenia skryptów w języku Python:
- Nowe funkcje do uruchamiania, zatrzymywania i uzyskiwania dostępu do uruchomionego nagrania z btrace.
- Obsługa odwołania do wartości RV w gdb.Type.
- Interpreter poleceń GDB:
- Polecenia użytkownika akceptują teraz nieograniczoną liczbę argumentów.
- "eval" polecenie rozwija teraz argumenty zdefiniowane przez użytkownika.
- Obsługa DWARF w wersji 5
- (zwróć uwagę, że jego indeks .debug_names nie jest jeszcze obsługiwany).
- Ulepszenia GDB / MI:
- Polecenie New-file-list-shared-libraries, aby wyświetlić listę bibliotek współdzielonych w programie.
- Polecenie New -target-flash-erase, aby wymazać pamięć flash.
- Obsługa rodzimych FreeBSD / mips (mips * - * - freebsd)
- Obsługa następujących celów:
- Synopsys ARC (arc * - * - elf32)
- FreeBSD / mips (mips * - * - freebsd)
- Różne ulepszenia:
- Przekierowanie z wiersza polecenia jest teraz obsługiwane na hostach MS-Windows.
- Obsługa nazw wątków w systemie MS-Windows.
- Obsługa rejestru PKU w systemie GNU / Linux.
- Obsługa opisów Target na sparc32 i sparc64.
- Nowe polecenie GDB / CLI do wymazania pamięci flash
- Obsługa rekordów / powtórek dla rdrand i rdseed.
- Usunięto obsługę następujących funkcji:
- Obsługa programów Java skompilowanych z gcj
- Obsługa następujących konfiguracji:
- FreeBSD / alpha (alpha * - * - freebsd *)
- GNU / kFBSBS / alpha (alpha * - * - kfreebsd * -gnu)
Co nowego w wersji 7.9.1:
- PR build / 18033 (komentarz w stylu C ++ używany w gdb / iq2000-tdep.c i gdb / compile / compile - *. c)
- Komenda PR build / 18298 ("kompilacja" nie może znaleźć kompilatora, jeśli narzędzia skonfigurowane za pomocą tripletu zamiast kwadratu)
- PR tui / 18311 (Losowo SEGV przy wyświetlaniu rejestrów w trybie TUI)
- PR python / 18299 (wyjątek przy rejestracji globalnej ładnej drukarki w trybie szczegółowym)
- PR python / 18066 (argument "słowo" wydaje się zepsuty w Command.complete (tekst, słowo))
- PR pascal / 17815 (Napraw zachowanie pascala dla pól klasy z testcase)
- PR python / 18285 (ptype expr-with-xmethod powoduje SEGV)
Co nowego w wersji 7.9:
- Ulepszenia skryptów w języku Python.
- Kompilacja kodu źródłowego i wtrysk do niższego.
- Nowe polecenia, opcje, zmienne wygody / opcje.
- Obsługa MIPS SDE (mips * -sde * -elf *).
- Lepsza obsługa sygnałów podczas debugowania wątkowych programów.
Co nowego w wersji 7.8.2:
- PR symtab / 17642 ([7.8 regresja] wewnętrzny -error: resolve_dynamic_struct: Asercja `TYPE_NFIELDS (type) & gt; 0 'failed.)
- PR binutils / 17677 (_bfd_elf_get_synthetic_symtab działa w złożoności O (n ^ 2))
- PR gdb / 16215 (SPARC: nie można obliczyć CFA dla tej ramki)
- PR gdb / 17525 (komendy asynchronizacji celu: breakpoint nie są wykonywane po uruchomieniu programu ze skryptu -x)
- PR cli / 17828 ([7.8 regresja] -batch -ex r breaks terminal)
Co nowego w wersji 7.8.1:
- PR python / 17364 (Potrzebujesz lepszych nazw drukarek w bound_registers.py)
- PR build / 17104 (CFLAGS = "-Wall -Wextra" gdb / confgure - z-babeltrace kończy się niepowodzeniem)
- PR gdb / 17345 (babeltrace (1.1.2 i nowsze) narzeka na dane ctf generowane przez GDB)
- PR build / 17298 (gcore: nie można uzyskać rejestrów: brak takiego procesu)
- PR python / 17342 (Xmethod Python nie jest kompatybilny z Pythonem 3)
- PR python / 17355 (Crash na filtrach ramek Pythona z nieczytelnym arg)
- PR guile / 17367 (obliczenie błędnej ścieżki gildii, gdy skrypt pkg-config podany jako arg do --with-guile)
- PR gdb / 17247 (gdb zawiesza się w aplikacji z wieloma gwintami)
- PR gdb / 17347 (Regresja: GDB zatrzymał się podczas pracy z dołączonym procesem)
- PR gdb / 17407 (Regresja dla odczytu VDSO w systemie Linux)
- Serwer PR / 17457 (aarch64 / gdbserver: wyświetlanie błędnych rejestrów zmiennoprzecinkowych)
- Serwer PR / 17487 (stan- & gt; dr_control_mirror == 0 Asercja nieudanych w gdbserver w systemie Windows)
- PR gdb / 17472 (z adnotacjami, dane wejściowe podczas wykonywania na pierwszym planie zawiesza readline / gdb)
- PR gdb / 17471 (powtarzanie polecenia tła czyni go pierwszym planem)
- PR cli / 17300 (awarie w trybie non-stop przy kontynuacji -a & (readline_callback_read_char () wywołana bez obsługi!))
- PR python / 17372 (python zawiesza się podczas wyświetlania pomocy ())
- PR python / 17408 (../../gdb/infrun.c:5256: internal-error: switch_back_to_stepped_thread: Asercja `! schedlock_applies (1) 'nie powiodła się.)
Co nowego w wersji 7.8:
- Obsługa skryptów guile.
- Ulepszenia skryptów w języku Python.
- Nowe polecenia, opcje, zmienne wygody / opcje.
- Rozszerzenia protokołu zdalnego i rozszerzenia GDBserver.
- Nowe konfiguracje docelowe (PowerPC64 GNU / Linux little-endian).
- Ulepszenia btrace.
- Obsługa automatycznych tablic o zmiennej długości ISO C99.
- "Porównywane sekcje" polecenie działa teraz we wszystkich celach.
- "Docelowy natywny" polecenie teraz łączy się z natywnym celem.
Co nowego w wersji 7.7:
- Rozszerzona obsługa skryptów w języku Python.
- Niektóre ulepszenia C ++.
- Nowe polecenia, opcje, zmienne wygody / opcje.
- Kilka nowych poleceń i ulepszeń GDB / MI.
- Rozszerzenia protokołu zdalnego i rozszerzenia GDBserver.
- Nowe konfiguracje docelowe (Nios II, TI MSP430).
- GDB Windows x64 rozwija obsługę danych.
- Obsługa sond SDT dla SystemTap na platformie AArch64 GNU / Linux.
- Obsługa CTF (Common Trace Format).
- Nowe skrypty gcore i gdb-add-index.sh.
- Ulepszono obsługę obsługi rekordów / powtórek ramienia *.
- Usunięto obsługę przestarzałych konfiguracji a.out NetBSD i OpenBSD. Warianty ELF tych konfiguracji są obsługiwane.
- "Set | show remotebaud" komendy są przestarzałe na rzecz "show serial show bod".
Co nowego w wersji 7.6.2:
- Punkt przerwania PR / 16251 (błąd punktu przerwania sprzętu AArch64 po widelec)
- PR gdb / 16303 (GDB 7.6.1 nie działa z binutils 2.24 na MIPS16 i microMIPS)
Co nowego w wersji 7.6.1:
- PR tdep / 15420 (Nie można debugować programów wątkowych w nowszych wersjach x86-solaris - Solaris 10, aktualizacja 10 lub nowsza)
- PR remote / 15455 (zepsuty pakiet QTro)
- PR build / 15476 (Błąd kompilacji z powodu niekompletnego typu wyliczeniowego w utils.h)
- Serwer PR / 15594 (obsługa tls w 64x32 x86 gdbserver nie rozszerza adresu na 64-bitowy)
- serwer PR / 15075 (dprintf oznacza "następny")
- Serwer PR / 15434 (dprintf używa synchronicznego "kontynuuj" nawet w trybie non-stop)
- PR tui / 14880 (w układach dzielonego rejestru, wyniki w górę w niepowodzeniu asercji w wartości.c)
- PR c ++ / 15519 (GDB 7.6 jest 94 razy wolniejszy niż GDB 7.5.1 przy użyciu określonego pliku core)
- PR gdb / 15837 (GDB drukuje wartości wpisów dla zmiennych lokalnych)
- PR gdb / 15415 (gdb rozwiązuje dowiązania symboliczne podczas przekazywania argv [0])
- PR cli / 15603 (CTRL-C nie może dłużej przerywać gorszej jakości)
- PR gdb / 15604 (gdbserver socket leak 7,5 regression)
Co nowego w wersji 7.5:
- Obsługa języka.
- Nowe cele (x32 ABI, microMIPS, Renesas RL78, HP OpenVMS ia64).
- Więcej ulepszeń skryptów w języku Python.
- SDT (Static Defined Tracing) obsługuje sondy SystemTap.
- Udoskonalenia GDBserver (połączenia stdio, ocena warunków przerwania na podstawie strony docelowej, ulepszenia protokołu zdalnego).
- Inne różne ulepszenia (możliwość zatrzymania, gdy biblioteka współdzielona jest ładowana / rozładowywana, dynamiczny printf itp.).
- Reverse debugging na ARM.
- Binarny "gdbtui" został porzucony i nie można go już budować. Użyj "gdb -tui" zamiast tego.
Co nowego w wersji 7.4:
- Niejednoznaczne linie komórkowe sĘ ... teraz traktowane bardziej konsekwentnie.
- Nieinteresujące funkcje i pliki można teraz pominąć, wykonując krok za pomocą "funkcji pomijania". i "pominąć plik" polecenia.
- Dodano polecenia dotyczące ustawiania i uzyskiwania maksymalnego limitu długości zdalnego punktu kontrolnego sprzętu.
- Znacznie poprawiono obsługę skryptów w języku Python.
- Wprowadzono wiele innych ulepszeń, poprawek i ogólnych zmian.
Co nowego w wersji 7.1:
- Obsługa nowych celów (w tym symulatora):
- Xilinx MicroBlaze
- Renesas RX
- Najważniejsze nowe funkcje to:
- Debugowanie wielu programów, dzięki czemu debuger może kontrolować więcej niż
- jeden program w ramach tej samej sesji GDB.
- Debugowanie niezależnego odczytywania pozycji (PIE).
- Zawiera również wiele ulepszeń i poprawek, w tym:
- Obsługa języka Python została rozszerzona.
- Udoskonalenia wsparcia C ++ (przestrzeń nazw, operatory rzutowania, poprawki błędów)
- Udoskonalenia obsługi Tracepoint.
- Udoskonalono zapis procesu (dziennik wykonania zapisu / przywracania, sprzęt )
- Obsługa punktów obserwacyjnych).
- Rozszerzenia protokołu zdalnego (debugowanie jądra systemu Linux, nowe pakiety
- w przypadku obsługi wątku)
Komentarze nie znaleziono