Publikimi i debbuger-it GDB 17

Представлен релиз отладчика GDB 17.1 (первый выпуск серии 17.x, ветка 17.0 использовалась для разработки). GDB поддерживает отладку на уровне исходных текстов для широкого спектра языков программирования (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust и т.д.) на различных аппаратных (i386, amd64, ARM, Power, Sparc, RISC-V, LoongArch и т.д.) и программных платформах (GNU/Linux, *BSD, Unix, Windows, macOS).

Наиболее заметные улучшения:

  • Для систем x86-64 реализована поддержка теневого стека (shadow stack), появившегося в ядре Linux 6.6 и позволяющего блокировать работу многих эксплоитов, используя аппаратные возможности процессоров Intel для защиты от перезаписи адреса возврата из функции в случае переполнения буфера в стеке. Суть защиты в том, что после передачи управления функции, адреса возврата сохраняются процессором не только в обычном стеке, но и в отдельном «теневом» стеке, который не может быть изменён напрямую. Перед выходом из функции адрес возврата извлекается из теневого стека и сверяется с адресом возврата из основного стека.
  • Добавлена возможность отладки Linux-программ, собранных для архитектуры AArch64 и использующих расширение GCS (Guarded Control Stack). GCS предоставляет средства для аппаратной защиты адресов возврата из функций и блокирования эксплоитов, использующих методы возвратно-ориентированного программирования (ROP — Return-Oriented Programming, эксплоит формируется из уже имеющихся кусков машинных инструкций, завершающихся инструкцией возврата управления).
  • Для систем с архитектурой rv64gc реализована полная поддержка записи процесса выполнения программы для отладки в обратном направлении и повторного воспроизведения участков кода.
  • В команду «info threads» добавлены опции «-stopped» и «-running» для показа только остановленных или только выполняемых потоков.
  • В команде «info sharedlibrary» на платформах Linux и FreeBSD обеспечен показ адресов для всего диапазона памяти, выделенного разделяемой библиотеке (ранее показывался только базовый адрес и адреса для секции .text).
  • Обеспечена возможность использования снимков состояния (checkpoint) в Linux при одновременной отладке несколько процессов.
  • Расширена поддержка пространств имён компоновщика (linker namespace).
  • Для выделения ошибок и предупреждений задействованы символы emoji.
  • На платформе Linux реализована встроенная возможность доступа к локальным переменным потоков (Thread-Local Storage, TLS), используемая при отсутствии библиотеки libthread_db. Возможность доступна для архитектур x86_64, aarch64, ppc64, s390x и riscv при сборке с GLIBC или MUSL.
  • Добавлена команда «set riscv numeric-register-names» для отображения регистров RISC-V c использованием их цифровых идентификаторов вместо ABI-имён.
  • Внесены улучшения в Python API. Добавлены новые классы gdb.Color и gdb.ParameterPrefix, атрибут gdb.Value.is_unavailable, функция gdb.warning(). Прекращена поддержка старых версий Python — поддерживается только Python 3.4 и новее.
  • Внесены улучшения в Guile API. Добавлен тип «<gdb:color>».
  • Расширены возможности протокола DAP (Debugger Adapter Protocol): реализована поддержка запросов «completions» и добавлена опция «—binary-output» для отключения преобразования символов перевода строки на платформе Windows.
  • Добавлены переменные $_colorsupport (список цветовых пространств, поддерживаемых терминалом), $linker_namespace_count и $_linker_namespace (список активных пространств имён компоновщика).
  • Добавлены опции «—disable-gdb-compile» для отключения подсистемы компиляции, а также «—disable-gdb-dwarf-support» и «—disable-gdb-mdebug-support» для отключения отладочной информации в форматах DWARF и mdebug/ecoff.
  • В gdbserver прекращена поддержка UST (static tracepoint).

Burimi: opennet.ru

Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы 🔥 Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы | ProHoster