Zaprezentowano wydanie debuggera GDB 13.1 (do rozwoju wykorzystano pierwszą wersję serii 13.x, gałąź 13.0). GDB obsługuje debugowanie na poziomie źródłowym dla szerokiej gamy języków programowania (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust itp.) na różnym sprzęcie (i386, amd64 , ARM, Power, Sparc, RISC-V itp.) i platform oprogramowania (GNU/Linux, *BSD, Unix, Windows, macOS).
Kluczowe ulepszenia:
- Dodano obsługę uruchamiania debugera i serwera GDB na architekturach GNU/Linux/LoongArch i GNU/Linux/CSKY.
- Zaimplementowano obsługę pracy na platformie Windows w trybie asynchronicznym (asynchronicznym).
- Na platformie FreeBSD dodano obsługę zmiennych TLS (Thread Local Storage) dla architektur ARM i AArch64, a dla architektury AArch64 zapewniono możliwość korzystania ze sprzętowych punktów przerwania (watchpoint).
- W środowisku GNU/Linux w systemach LoongArch dodano obsługę obliczeń zmiennoprzecinkowych.
- Zaimplementowano nowe polecenia „maintenance set ignorowanie-prologue-end-flag|libopcodes-styling” i „maintenance printframe-id”, a także polecenia do kontrolowania stylu zdezasemblowanego wyjścia (set style deasembler *).
- Dodano polecenia „ustaw półbajty druku [on|off]” i „pokaż półbajty wydruku” do sterowania wyświetlaniem wartości binarnych w grupach czterobajtowych.
- Wprowadzono ulepszenia w interfejsie API języka Python. Dodano API do instrukcji deasemblacji, zaimplementowano typ gdb.BreakpointLocation oraz dodano funkcje gdb.format_address, gdb.current_language i gdb.print_options.
- Pierwsza wersja interfejsu zarządzania GDB/MI jest przestarzała i zostanie usunięta w GDB 14.
- Dodano obsługę sekcji debugowania skompresowanych przy użyciu algorytmu zstd w plikach ELF.
- Dodano nowe wbudowane zmienne: $_inferior_thread_count, $_hit_bpnum, $_hit_locno.
- Format wyjściowy poleceń „disassemble /r” i „zapis historii instrukcji /r” został dostosowany tak, aby pasował do danych wyjściowych objdump. Aby przywrócić stary format, dodano tryb „/b”.
- W TUI (Text User Interface) stylizacja kodu źródłowego i asemblera wyróżniona wskaźnikiem bieżącej pozycji jest wyłączona.
- Polecenie „dokument” umożliwia dokumentowanie poleceń użytkownika.
- Dodano możliwość tworzenia zrzutów danych znaczników pamięci wykorzystywanych podczas korzystania z mechanizmu ARMv8.5 MTE (MemTag, Memory Tagging Extension), który umożliwia powiązanie znaczników z każdą operacją alokacji pamięci i organizowanie sprawdzania wskaźników podczas uzyskiwania dostępu do pamięci, co musi zostać powiązany z właściwym tagiem.
- Tryb zgodności z DBX został wycofany.
- Zakończono obsługę budowania przy użyciu języka Python 2.
- Polecenia „set debug aix-solib on|off”, „show debug aix-solib”, „set debug solib-frv on|off” i „show debug solib-frv” zostały usunięte, a polecenia „set/show debug” powinno być użyte zamiast solib.”
Źródło: opennet.ru