Przedstawiono wydanie debuggera GDB 18.1 (pierwsza wersja serii 18.x, gałąź 18.0 była używana do rozwoju). GDB wspiera debugowanie na poziomie kodu źródłowego dla szerokiego zakresu języków programowania (C, C++, D, Go, Objective-C, Fortran, OpenCL C, Pascal, Rust, assembler, Modula-2 i Ada) na różnych platformach sprzętowych (i386, amd64, ARM, Power, Sparc, RISC-V, LoongArch itd.) i programowych (GNU/Linux, *BSD, Unix, Windows, macOS).
Najbardziej zauważalne ulepszenia:
- Dodano wsparcie dla platform GNU/Linux/MicroBlaze (microblazeel-*linux*) oraz AArch64 MinGW (aarch64-*-mingw*). Architektura 32-bitowa s390 (s390-*) została uznana za przestarzałą i planuje się jej usunięcie.
- Na platformie Windows zaimplementowano wsparcie dla trybu „non-stop” (dla Windows 10 i nowszych), blokadę planowania komendą „set scheduler-locking on” oraz natywne zmienne TLS (Thread Local Storage). Przy uruchomieniu w Windows Terminal zapewniono wsparcie dla 24-bitowych kolorów, emoji oraz kodowania UTF-8. W interfejsach CLI, TUI, MI i DAP wprowadzono normalizację użycia ukośnika w ścieżkach plików (zawsze używane jest C:/proj/src/main.c zamiast C:/proj/src\main.c).
- Aby rozwiązać problemy z wyszukiwaniem typów, do indeksu .gdb_index teraz dodawane są wszystkie symbole debugowania typów.
- W komendzie „info locals” dodano wyświetlanie adnotacji „shadowed” dla zmiennych zewnętrznych, które są przesłonięte przez wewnętrzne zmienne o tej samej nazwie. Dodano ustawienie „set print shadowed on|off” do zarządzania wyjściem.
- W komendach „set args”, „run”, „start” i „starti” wprowadzono możliwość przekazywania argumentów zawierających znaki nowej linii, umieszczonych w cudzysłowach.
- W GDB oraz gdbserver dodano flagę „—no-escape-args” do wyłączenia ucieczki specjalnych znaków w argumentach.
- Dla architektury AArch64 dodano wsparcie dla rejestru FPMR (Floating Point Mode Register).
- Dodano wstępną obsługę ładowania plików core, stworzonych na systemach z obsługą Intel AMX.
- Dodano wsparcie dla zdarzeń śledzenia, przetwarzanych przez bibliotekę libipt 2.2.
- Podczas debugowania przez port szeregowy dodano możliwość wskazania niestandardowych prędkości transmisji.
- Do komendy help dodano tryb „essential” z przeglądem minimalnego zestawu komend, które mogą być potrzebne nowemu użytkownikowi GDB.
- Dodano komendy:
- set/show/unset local-environment — odpowiednik „set/show/unset environment”, wpływający na środowisko podprocesów uruchamianych przez sam GDB (np. przez shell lub pipe).
- save history, save skip, save user — zapisuje historię komend, operacje skip oraz komendy użytkownika w pliku.
- info proc environ — pokazuje zmienne środowiskowe procesu.
- set/show progress-bars enabled — zarządzanie wyświetlaniem wskaźników postępu.
- delete skip, enable skip, disable skip — aliasy dla poleceń skip delete/enable/disable.
- set/show debug gnu-ifunc oraz set/show debug ctf.
- Usunięto wsparcie dla pierwszej wersji formatu DWP (DWARF Package File), formatów informacji debugowania stabs i mdebug. Zakończono możliwość zapisu wyników śledzenia w formacie CTF (Common Trace Format).
- W następnej wersji zaplanowano rozdzielenie trybów Windows ABI GNU (dla kodu generowanego przez zestaw narzędzi MinGW) i MSVC (dla kodu kompilanego przez kompilatory MSVC i Clang). Aby wybrać Windows ABI w poleceniu „set osabi”, konieczne będzie wskazanie wartości „Windows-GNU” i „Windows-MSVC”. Obecnie używana wartość Windows automatycznie wybierze odpowiedni tryb w zależności od argumentu „—target” (—target=x86_64-pc-windows-msvc lub —target=x86_64-w64-mingw32).
Źródło: opennet.ru
