Wydanie debuggera GDB 15.1 zostało zaprezentowane (pierwsza wersja serii 15.x, gałąź 15.0 była używana do rozwoju). GDB wspiera debugowanie na poziomie kodu źródłowego dla szerokiego wachlarza języków programowania (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust itd.) na różnych platformach sprzętowych (i386, amd64, ARM, Power, Sparc, RISC-V itd.) oraz programowych (GNU/Linux, *BSD, Unix, Windows, macOS).
Kluczowe ulepszenia:
- Do kompilacji GDB i GDBserver teraz wymagany jest kompilator obsługujący C++17 (co najmniej GCC 9).
- Wprowadzono poprawki w Python API. Dodano funkcje gdb.notify_mi, gdb.missing_debug.register_handler oraz gdb.interrupt, klasę gdb.missing_debug.MissingDebugInfo, moduł db.missing_debug, atrybuty gdb.Value.bytes i gdb.InferiorThread.ptid_string, oraz stałe gdb.SYMBOL_TYPE_DOMAIN, gdb.SYMBOL_FUNCTION_DOMAIN i gdb.SEARCH_*_DOMAIN. W obiektach gdb.Inferior i gdb.InferiorThread zrealizowano możliwość dodawania własnych atrybutów.
- Kontynuowano wdrażanie protokołu DAP (Debugger Adapter Protocol). Dodano polecenie „set debug dap-log-level” do zarządzania logowaniem DAP. Dodano wsparcie dla żądania „cancel” oraz możliwość tworzenia zdarzenia „process”.
- W protokole zdalnego debugowania dodano wsparcie dla pakietów QThreadOptions i qIsAddressTagged, a także zrealizowano polecenie „set/show remote thread-options-packet”.
- W GDBserver zaprzestano wsparcia dla opcji „—remote-debug” oraz „—event-loop-debug”, a także komend ‘monitor set remote-debug’ i ‘monitor set event-loop-debug’, podczas gdy w opcji „—debug” wprowadzono możliwość przekazywania listy komponentów do debugowania oddzielonych przecinkami (all, threads, event-loop i remote). Podobnie, możliwość określenia komponentów zrealizowano w komendzie ‘monitor set debug’.
- Do indeksu dodano informacje o funkcji main, co przyspiesza uruchamianie w przypadku korzystania z niektórych dużych plików wykonywalnych.
- Komendy MPX „show/set mpx bound” zostały uznane za przestarzałe, wsparcie dla nich zakończono w Intel w 2019 roku.
- Dodano nowe komendy:
- „set/show direct-call-timeout”
- „set/show indirect-call-timeout”
- „set/show unwind-on-timeout on|off”
- „set/show unwind-on-signal on|off”
- W komendach „gcore” i „generate-core-file” wprowadzono wsparcie dla optymalizacji przechowywania pustych obszarów w generowanych plikach core.
Źródło: opennet.ru
