Zaprezentowano wydanie debuggera GDB 12.1 (do rozwoju wykorzystano pierwszą wersję serii 12.x, gałąź 12.0). GDB obsługuje debugowanie na poziomie źródła dla szerokiej gamy języków programowania (Ada, C, C++, Objective-C, Pascal, Go, 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:
- Domyślnie włączony jest tryb wielowątkowy ładowania symboli debugowania, co przyspiesza uruchamianie.
- Ulepszona obsługa szablonów C++.
- Zaimplementowano obsługę pracy na platformie FreeBSD w trybie asynchronicznym (async).
- Możliwe jest wyłączenie korzystania z podświetlania źródła GNU i używanie biblioteki Pygments do podświetlania składni.
- Polecenie „clone-inferior” sprawdza, czy ustawienia TTY, CMD i ARGS zostały skopiowane z oryginalnego obiektu debugowania (gorszego) do nowego obiektu debugowania. Zapewnia również, że wszystkie zmiany zmiennych środowiskowych dokonane za pomocą poleceń „ustaw środowisko” lub „unset środowisko” zostaną skopiowane do nowego obiektu debugowania.
- Polecenie „print” zapewnia obsługę drukowania liczb zmiennoprzecinkowych, określając format wartości bazowej, np. szesnastkowy („/x”).
- Dodano obsługę uruchamiania debugera i serwera GDB na architekturze GNU/Linux/OpenRISC (lub1k*-*-linux*). Dodano obsługę debugowania aplikacji dla platformy docelowej GNU/Linux/LoongArch (loongarch*-*-linux*). Wsparcie dla platformy docelowej S+core (score-*-*) zostało przerwane.
- Ogłoszono, że GDB 12 będzie ostatnią wersją obsługującą budowanie w Pythonie 2.
- Przestarzałe i zostaną usunięte w trybie zgodności z GDB 13 DBX.
- Interfejs API zarządzania GDB/MI umożliwia użycie polecenia „-add-inferior” bez parametrów lub z flagą „--no-connection” w celu dziedziczenia połączenia z bieżącego obiektu debugowania lub uruchomienia bez połączenia.
- Wprowadzono ulepszenia w interfejsie API języka Python. Zapewniona jest możliwość implementacji poleceń GDB/MI w Pythonie. Dodano nowe zdarzenia gdb.events.gdb_exiting i gdb.events.connection_removed, funkcję gdb.Architecture.integer_type(), obiekt gdb.TargetConnection, właściwość gdb.Inferior.connection, metodę gdb.RemoteTargetConnection.send_packet i atrybuty gdb.InferiorThread.details, gdb.Type.is_scalar i gdb.Type.is_signed.
Źródło: opennet.ru