Wydanie debuggera GDB 17

Przedstawiono wydanie debuggera GDB 17.1 (pierwsza wersja serii 17.x, gałąź 17.0 była wykorzystywana do rozwoju). GDB wspiera debugowanie aplikacji w wielu językach programowania (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust itp.) na różnych platformach sprzętowych (i386, amd64, ARM, Power, Sparc, RISC-V, LoongArch itp.) oraz programowych (GNU/Linux, *BSD, Unix, Windows, macOS).

Najbardziej zauważalne ulepszenia:

  • Dla systemów x86-64 wprowadzono wsparcie dla cienia stosu (shadow stack), które pojawiło się w jądrze Linux 6.6 i pozwala blokować wiele exploitów, wykorzystując możliwości sprzętowe procesorów Intel do ochrony przed nadpisaniem adresu powrotu z funkcji w przypadku przepełnienia bufora na stosie. Istota zabezpieczenia polega na tym, że po przekazaniu kontroli funkcji adresy powrotu są zapisywane przez procesor nie tylko w zwykłym stosie, ale również w oddzielnym „cienkim” stosie, który nie może być zmieniany bezpośrednio. Przed wyjściem z funkcji adres powrotu jest pobierany z cienia stosu i porównywany z adresem powrotu z głównego stosu.
  • Dodano możliwość debugowania programów Linux, skompilowanych dla architektury AArch64 i używających rozszerzenia GCS (Guarded Control Stack). GCS zapewnia środki do ochrony sprzętowej adresów powrotu z funkcji i blokowania exploitów wykorzystujących metody programowania opartego na powrocie (ROP — Return-Oriented Programming, exploit składa się z już istniejących fragmentów instrukcji maszynowych kończących się instrukcją powrotu).
  • Dla systemów z architekturą rv64gc wprowadzono pełne wsparcie dla nagrywania procesu wykonania programu do debugowania w odwrotnej kolejności i ponownego odtwarzania fragmentów kodu.
  • Do polecenia „info threads” dodano opcje „-stopped” i „-running” do wyświetlania tylko zatrzymanych lub tylko działających wątków.
  • W poleceniu „info sharedlibrary” na platformach Linux i FreeBSD zapewniono wyświetlanie adresów dla całego zakresu pamięci przydzielonej bibliotece współdzielonej (wcześniej wyświetlany był tylko adres podstawowy i adresy dla sekcji .text).
  • Zapewniono możliwość korzystania ze zrzutów stanu (checkpoint) w Linuxie podczas jednoczesnego debugowania wielu procesów.
  • Rozszerzono wsparcie dla przestrzeni nazw linkerów (linker namespace).
  • Do wyróżnienia błędów i ostrzeżeń użyto symboli emoji.
  • Na platformie Linux wprowadzono wbudowaną możliwość dostępu do lokalnych zmiennych wątków (Thread-Local Storage, TLS), używaną w przypadku braku biblioteki libthread_db. Funkcjonalność ta jest dostępna dla architektur x86_64, aarch64, ppc64, s390x oraz riscv przy budowie z GLIBC lub MUSL.
  • Dodano polecenie „set riscv numeric-register-names” do wyświetlania rejestrów RISC-V z użyciem ich cyfrowych identyfikatorów zamiast nazw ABI.
  • Wprowadzono ulepszenia w Python API. Dodano nowe klasy gdb.Color i gdb.ParameterPrefix, atrybut gdb.Value.is_unavailable oraz funkcję gdb.warning(). Zaprzestano wspierania starych wersji Pythona — wspierany jest tylko Python 3.4 i nowsze.
  • Wprowadzono ulepszenia w Guile API. Dodano typ „”.
  • Rozszerzono możliwości protokołu DAP (Debugger Adapter Protocol): zaimplementowano wsparcie dla zapytań „completions” oraz dodano opcję „—binary-output”, aby wyłączyć konwersję znaków końca linii na platformie Windows.
  • Dodano zmienne $_colorsupport (lista przestrzeni kolorów obsługiwanych przez terminal), $linker_namespace_count oraz $_linker_namespace (lista aktywnych przestrzeni nazw kompilatora).
  • Dodano opcje „—disable-gdb-compile” do wyłączenia podsystemu kompilacji, a także „—disable-gdb-dwarf-support” i „—disable-gdb-mdebug-support” do wyłączenia informacji debugowania w formatach DWARF i mdebug/ecoff.
  • W gdbserver zakończono wsparcie dla UST (static tracepoint).

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster