Została wydana wersja debuggera GDB 11.1 (pierwsza wersja serii 11.x, gałąź 11.0 była używana do rozwoju). GDB wspiera debugowanie na poziomie źródłowym dla szerokiego zakresu języków programowania (Ada, C, C++, Objective-C, Pascal, Go, Rust itd.) na różnych platformach sprzętowych (i386, amd64, ARM, Power, Sparc, RISC-V itd.) i programowych (GNU/Linux, *BSD, Unix, Windows, macOS).
Kluczowe ulepszenia:
- W interfejsie TUI (Text User Interface) dodano wsparcie dla działań myszą oraz możliwość przewijania zawartości za pomocą kółka myszy. Zapewniono przesyłanie w GDB kombinacji klawiszy, które nie są przetwarzane w TUI.
- Dodano wsparcie dla mechanizmu ARMv8.5 MTE (MemTag, Memory Tagging Extension), który umożliwia powiązanie tagów z każdą operacją przydzielania pamięci i wprowadza weryfikację wskaźnika podczas dostępu do pamięci, który musi być związany z poprawnym tagiem. W protokole zdalnego debugowania dodano wsparcie dla pakietów „qMemTags” i „QMemTags” do powiązania tagów z pamięcią.
- Zmodyfikowano logikę odczytu plików konfiguracyjnych. Plik .gdbinit jest teraz sprawdzany w następującej kolejności: $XDG_CONFIG_HOME/gdb/gdbinit, $HOME/.config/gdb/gdbinit i $HOME/.gdbinit. To znaczy, najpierw w podkatalogu config, a następnie w katalogu domowym.
- W poleceniu „break […] if CONDITION” zakończono wyświetlanie błędu, gdy warunek był niedozwolony w określonych miejscach, jeżeli warunek był dopuszczalny przynajmniej w jednym przypadku.
- Dodano wsparcie dla debugowania zrzutów rdzeni, generowanych dla programów Cygwin, skompilowanych dla architektury x86_64.
- Dodano wsparcie dla typów z stałą przecinkową, a także dla stałych DW_AT_GNU_numerator i DW_AT_GNU_denominator.
- Dodano ustawienie „startup-quietly on|off”; gdy „on”, jest to odpowiednik opcji „-silent”.
- W poleceniu „ptype” wprowadzono opcje "/x” i „/d” do wyboru szesnastkowego lub dziesiętnego systemu liczbowego przy wyświetlaniu rozmiarów i przesunięć. Dodano ustawienie „print type hex on|off” do użycia wartości szesnastkowych w wyjściu polecenia ‘ptype’.
- W poleceniu „inferior” przy wywołaniu bez argumentów zapewniono wyświetlenie bieżącego obiektu debugowania (inferior).
- Przeprojektowano wyjście z polecenia „info source”.
- Dodano polecenie „style version foreground | background | intensity” do zarządzania stylem numeracji wersji.
- Dodano nowe opcje wiersza poleceń: „—early-init-command” („-eix”), „—early-init-eval-command” („-eiex”), „—qualified” (dla poleceń ‘-break-insert’ i ‘-dprintf-insert’), „—force-condition” (dla poleceń ‘-break-insert’ i ‘-dprintf-insert’), „—force” (dla polecenia ‘-break-condition’).
- W zespole „-file-list-exec-source-files” dozwolone jest podawanie wyrażeń regularnych w celu filtrowania przetwarzanych plików źródłowych. Do wyjścia dodano pole „debug-fully-read”, aby informować o stopniu załadowania informacji debugujących.
- Wprowadzono usprawnienia w Python API. Dodano nowe metody gdb.Frame.level() i db.PendingFrame.level() do zwracania poziomu stosu dla obiektu Frame. W przypadku wystąpienia punktu przerywania (catchpoint) w Python API zapewniono przekazywanie gdb.BreakpointEvent zamiast gdb.StopEvent. Dodano ustawienia „python ignore-environment on|off” do ignorowania zmiennych środowiskowych oraz „python dont-write-bytecode auto|on|off” do wyłączenia zapisu bajtowego.
- Wprowadzono usprawnienia w Guile API. Dodano nowe procedury value-reference-value, value-rvalue-reference-value oraz value-const-value.
- Biblioteka GMP (GNU Multiple Precision Arithmetic) została dodana do obowiązkowych zależności kompilacyjnych.
- Wsparcie dla platformy ARM Symbian (arm*-*-symbianelf*) zostało zakończone.
Źródło: opennet.ru
