В GDB добавили поддержку технологий Intel CET и Shadow Stack.

20 декабря состоялся релиз GDB 17.1 — свободного отладчика, который уже много лет остаётся одним из главных инструментов разработчиков, работающих с языками C, C++, Rust, Go, Fortran, Ada и многими другими.
Одним из главных нововведений стала поддержка технологии Intel CET Shadow Stack для архитектуры x86-64, а также возможность отладки программ, использующих Guarded Control Stacks на процессорах AArch64. Обе технологии предназначены для защиты от атак, связанных с переполнением буфера и подменой адресов возврата.
Разработчики расширили возможности записи и воспроизведения выполнения программ — теперь эта функция работает на архитектуре RISC-V (rv64gc). Команда info threads обзавелась новыми опциями для фильтрации потоков по их состоянию, а механизм контрольных точек в Linux теперь корректно работает при отладке нескольких процессов одновременно.
В GDB появилась встроенная поддержка Thread Local Storage (TLS) на Linux для архитектур x86_64, aarch64, ppc64, s390x и riscv. Она работает даже при отсутствии библиотеки libthread_db, что особенно полезно при отладке статически скомпонованных программ или программ, использующих библиотеку MUSL вместо glibc.
Команда info sharedlibrary теперь отображает полный диапазон памяти, выделенный под разделяемую библиотеку, а не только её базовый адрес. Также улучшена поддержка пространств имён компоновщика.
Любопытное косметическое изменение: предупреждения и сообщения об ошибках теперь могут сопровождаться эмодзи — знаком предупреждения или крестиком. Эту функцию можно отключить в настройках.
Значительно расширен Python API: появился новый класс для работы с цветами, добавлена возможность создавать префиксы команд, а функция gdb.execute получила дополнительный параметр для управления стилизацией вывода. Аналогичные улучшения коснулись и Guile API.
В протоколе Debugger Adapter Protocol добавлена поддержка запросов автодополнения, а для Windows появилась опция отключения преобразования переносов строк.
Из важных изменений, затрагивающих совместимость: прекращена поддержка Python версий ниже 3.4. Разработчики также предупреждают, что формат отладочной информации stabs и объектный формат a.out признаны устаревшими и будут удалены в GDB 18.