Wydanie debugera GDB 13

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

Dodaj komentarz