Je vydána verze GDB 17.1 (první verze řady 17.x, pro vývoj byla použita větev 17.0). GDB podporuje ladění na úrovni zdrojového kódu pro širokou škálu programovacích jazyků (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust atd.) na různém hardwaru (i386, amd64, ARM, Power, Sparc, RISC-V, LoongArch atd.) a softwarových platformách (GNU/Linux, *BSD, Unix, Windows, macOS).
Nejviditelnější vylepšení:
- Pro systémy x86-64 byla implementována podpora pro shadow stack, který se objevil v jádře. Linux 6.6, která umožňuje blokovat mnoho exploitů využitím hardwarových možností procesorů Intel k ochraně před přepsáním návratové adresy z funkce v případě přetečení vyrovnávací paměti zásobníku. Tato ochrana je založena na skutečnosti, že po předání řízení funkci procesor ukládá návratové adresy nejen na běžný zásobník, ale také na samostatný „stínový“ zásobník, který nelze přímo upravovat. Před ukončením funkce je návratová adresa vyjmuta ze stínového zásobníku a porovnána s návratovou adresou z hlavního zásobníku.
- Přidána možnost ladění Linux- programy kompilované pro architekturu AArch64 a využívající rozšíření Guarded Control Stack (GCS). GCS poskytuje hardwarovou ochranu návratových adres z funkcí a blokuje exploity pomocí technik programování orientovaného na návrat (ROP) (exploit je tvořen z existujících bloků strojových instrukcí končících návratovou instrukcí).
- Pro systémy s architekturou rv64gc byla implementována plná podpora pro záznam procesu provádění programu pro zpětné ladění a přehrávání částí kódu.
- Příkaz „info threads“ má nyní možnosti „-stopped“ a „-running“ pro zobrazení pouze zastavených nebo pouze spuštěných vláken.
- V příkazu „info sharedlibrary“ na platformách Linux a FreeBSD nyní zobrazuje adresy pro celý rozsah paměti alokovaný sdílené knihovně (dříve se zobrazovala pouze základní adresa a adresy pro sekci .text).
- Je k dispozici možnost používat snímky stavu (kontrolního bodu). Linux při ladění více procesů současně.
- Rozšířená podpora jmenných prostorů linkerů.
- Symboly emotikonů se používají k zvýraznění chyb a varování.
- Na plošině Linux Byla implementována vestavěná funkce pro přístup k lokálním proměnným vláken (Thread-Local Storage, TLS), která se používá, když chybí knihovna libthread_db. Tato funkce je k dispozici pro architektury x86_64, aarch64, ppc64, s390x a riscv při sestavování s GLIBC nebo MUSL.
- Přidán příkaz „set riscv numeric-register-names“ pro zobrazení registrů RISC-V pomocí jejich číselných ID místo názvů ABI.
- Byla provedena vylepšení Python API. Byly přidány nové třídy gdb.Color a gdb.ParameterPrefix, atribut gdb.Value.is_unavailable a funkce gdb.warning(). Podpora starších verzí Pythonu byla zrušena – podporován je pouze Python 3.4 a novější.
- Byla provedena vylepšení rozhraní Guile API. ".
- Možnosti protokolu DAP (Debugger Adapter Protocol) byly rozšířeny: byla implementována podpora pro požadavky na „dokončení“ a byla přidána možnost „--binary-output“, která zakazuje převod znaků nového řádku na platformě. Windows.
- Přidány proměnné $_colorsupport (seznam barevných prostorů podporovaných terminálem), $linker_namespace_count a $_linker_namespace (seznam aktivních jmenných prostorů linkerů).
- Přidány možnosti „--disable-gdb-compile“ pro zakázání kompilačního subsystému a také „--disable-gdb-dwarf-support“ a „--disable-gdb-mdebug-support“ pro zakázání ladicích informací ve formátech DWARF a mdebug/ecoff.
- Gdbserver ukončil podporu pro UST (statický sledovací bod).
Zdroj: opennet.ru
