GDB 17.1 debuggersinin buraxılışı təqdim edilir (17.x seriyasının ilk buraxılışı, 17.0 branşı inkişaf üçün istifadə olunub). GDB, müxtəlif hardware (i386, amd64, ARM, Power, Sparc, RISC-V, LoongArch və s.) və proqram platformalarında (GNU/Linux, *BSD, Unix, Windows, macOS) geniş proqramlaşdırma dilləri (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust və s.) üçün mənbə kod düzeyində debugging dəstəkləyir.
Ən diqqətəçarpan yeniliklər:
- x86-64 sistemləri üçün Linux 6.6 nüvəsində meydana çıxan shadow stack (kölgə yığı) dəstəyi reallaşdırılıb və bu, bir çox exploiti bloklamağa imkan verir, Intel prosessorlarının cihaz funksiyaları vasitəsilə yığıdakı buffer overflow zamanı funksiyadan dönmə ünvanının dəyişdirilməsinin qarşısını alır. Təhlükəsizlik prinsipi odur ki, funksiyaya keçid edildikdən sonra, dönüş ünvanları prosessor tərəfindən yalnız adi yığında saxlanmır, həm də birbaşa dəyişdirilə bilməyən ayrı bir "kölgə" yığında saxlanılır. Funksiyadan çıxarkən dönüş ünvanı kölgə yığından çıxarılır və əsas yığından dönüş ünvanı ilə yoxlanılır.
- AArch64 arxitekturası üçün toplanmış Linux proqramlarının debugging dəstəyi əlavə edilib və GCS (Guarded Control Stack) genişlənməsi istifadə olunur. GCS, funksiyalardan dönmə ünvanlarını qorumaq və geri yönəlmiş proqramlaşdırma (ROP - Return-Oriented Programming, var olan maşın təlimatlarının parçaları ilə formalaşan exploit) metodları istifadə edən exploitləri bloklamaq üçün vasitələr təqdim edir.
- rv64gc arxitekturasına malik sistemlər üçün kodun geri debug edilməsi və icrası üçün tam dəstək reallaşdırılıb.
- "info threads" komandası üçün yalnız dayandırılmış və ya yalnız işləyən iplikləri göstərmək üçün "-stopped" və "-running" variantları əlavə edilib.
- "info sharedlibrary" komandasında Linux və FreeBSD platformalarında bölüşülmüş kitabxana üçün ayrılmış yaddaşın bütün aralığını göstərəcək formada ünvanların təqdim edilməsi təmin edilib (əvvəlcə yalnız əsas ünvan və .text bölməsi üçün ünvanlar göstərilirdi).
- Eyni vaxtda bir neçə prosesin debuggingi zamanı Linux-da vəziyyətlərin (checkpoint) görüntülənməsini təmin edir.
- Linker adlarında (linker namespace) dəstək genişləndirilib.
- Xətaların və xəbərdarlıqların vurğulanması üçün emoji simvolları istifadə olunur.
- Linux platformasında, libthread_db kitabxanası olmadıqda istifadə edilən Thread-Local Storage (TLS) yerli dəyişənlərinə daxil olmaq imkanı tətbiq edilib. Bu imkan, x86_64, aarch64, ppc64, s390x və riscv arxitekturalarında GLIBC və ya MUSL ilə toplanıldıqda mövcuddur.
- RISC-V registrlərinin rəqəmsal identifikatorlarından istifadə etməklə göstərilməsini təmin edən "set riscv numeric-register-names" komandası əlavə edilib.
- Python API-də təkmilləşdirmələr edildi. Yeni gdb.Color və gdb.ParameterPrefix sinifləri, gdb.Value.is_unavailable atributu, gdb.warning() funksiyası əlavə edildi. Köhnə Python versiyalarının dəstəyi dayandırılıb — yalnız Python 3.4 və daha yeni versiyalar dəstəklənir.
- Guile API-də təkmilləşdirmələr edildi. «<gdb:color>» tipi əlavə edildi.
- DAP (Debugger Adapter Protocol) protokolunun imkanları genişləndirildi: «completions» sorğularının dəstəyi həyata keçirildi və Windows platformasında sıra sonu simvollarının çevrilməsinin deaktiv edilməsi üçün «—binary-output» seçimi əlavə edildi.
- $_colorsupport (terminalın dəstəklədiyi rəng məkanlarının siyahısı), $linker_namespace_count və $_linker_namespace (aktual bağlantı məkanları siyahısı) dəyişənləri əlavə edildi.
- Kompilyasiya alt sisteminin deaktiv edilməsi üçün «—disable-gdb-compile» seçimi, eləcə də DWARF və mdebug/ecoff formatlarında icra məlumatlarını deaktiv etmək üçün «—disable-gdb-dwarf-support» və «—disable-gdb-mdebug-support» seçiləri əlavə edildi.
- gdbserver-də UST (statik iz nöqtəsi) dəstəyi dayandırılıb.
Mənbə: opennet.ru
