Вышла новая версия популярного отладчика GDB - GDB 18
GDB поддерживает отладку для широкого спектра языков программирования (C, C++, D, Go, Objective-C, Fortran, OpenCL C, Pascal, Rust, ассемблер, Modula-2 и Ada) на различных аппаратных (i386, amd64, ARM, Power, Sparc, RISC-V, LoongArch и т.д.) и программных платформ (GNU/Linux, *BSD, Unix, Windows, macOS).
Это первый релиз в серии 18.x (ранее ветка 18.0 использовалась для разработки). Основной фокус сделали на улучшении поддержки Windows, добавлении новых платформ и удобстве для новичков. В частности, можно отметить следующие нововведения:
* Новые платформы. Добавили поддержку GNU/Linux/MicroBlaze (microblazeel-*linux*) и AArch64 MinGW (aarch64-*-mingw*). Для AArch64 также реализовали поддержку регистра FPMR (Floating Point Mode Register).
* Улучшения для Windows. Появилась поддержка режима non-stop (для Windows 10 и новее), блокировки планировщика (команда `set scheduler-locking on`) и нативных переменных Thread Local Storage (TLS). В Windows Terminal теперь работают 24-битные цвета, emoji и кодировка UTF-8 (при соответствующей кодовой странице хоста).
* Единообразие путей. Во всех интерфейсах (CLI, TUI, MI, DAP) теперь всегда используются прямые слэши в путях к файлам (например, `C:/proj/src/main.c` вместо `C:/proj/src\main.c`).
* Работа с переменными. В команде `info locals` появилась аннотация `shadowed`: она подсвечивает внешние переменные, которые перекрываются внутренними с тем же именем. Управлять этим выводом можно через `set print shadowed on|off`.
* Аргументы команд. В команды `set args`, `run`, `start` и `starti` добавили возможность передавать аргументы с символами новой строки, если они заключены в кавычки. Также появился флаг `--no-escape-args` (в GDB и gdbserver), который отключает экранирование специальных символов в аргументах.
* Трассировка и отладка. Добавили поддержку событий трассировки, которые обрабатывает библиотека libipt 2.2. Появилась начальная возможность загружать core-файлы, созданные на системах с поддержкой Intel AMX. При отладке через последовательный порт теперь можно указывать нестандартные скорости передачи.
* Помощь для новичков. В команду `help` добавили режим `essential` — он выводит обзор минимального набора команд, которые могут понадобиться начинающему пользователю.
* Новые команды. Среди них:
* `set/show/unset local-environment` (аналог `set/show/unset environment`, но влияет на окружение подпроцессов, запускаемых самим GDB);
* `save history`, `save skip`, `save user` (сохраняют в файл историю команд, операции skip и пользовательские команды);
* `info proc environ` (показывает переменные окружения процесса);
* `set/show progress-bars enabled` (управляет отображением индикаторов прогресса для длительных операций);
* псевдонимы `delete skip`, `enable skip`, `disable skip`.
* Улучшения для разработчиков. Продолжили развивать Python API и поддержку протокола GAP.
Также убрали/изменили ряд ранее имевшихся фич:
* Объявили устаревшей и намеченной к удалению 32-разрядную архитектуру s390 (s390-*).
* Убрали поддержку первой версии формата DWP (DWARF Package File), а также форматов отладочной информации stabs и mdebug.
* Прекратили возможность сохранять результат трассировки в формате CTF (Common Trace Format).
В следующей версии планируют разделить режимы Windows ABI: отдельно для GNU (код, собранный через MinGW) и для MSVC (компиляторы MSVC и Clang). В команде `set osabi` для выбора потребуется указывать `Windows-GNU` или `Windows-MSVC`. Сейчас значение Windows автоматически подбирает нужный режим в зависимости от аргумента `--target`.
https://www.mail-archive.com/info-gnu@gnu.org/msg03572.html
https://www.sourceware.org/gdb/
GDB поддерживает отладку для широкого спектра языков программирования (C, C++, D, Go, Objective-C, Fortran, OpenCL C, Pascal, Rust, ассемблер, Modula-2 и Ada) на различных аппаратных (i386, amd64, ARM, Power, Sparc, RISC-V, LoongArch и т.д.) и программных платформ (GNU/Linux, *BSD, Unix, Windows, macOS).
Это первый релиз в серии 18.x (ранее ветка 18.0 использовалась для разработки). Основной фокус сделали на улучшении поддержки Windows, добавлении новых платформ и удобстве для новичков. В частности, можно отметить следующие нововведения:
* Новые платформы. Добавили поддержку GNU/Linux/MicroBlaze (microblazeel-*linux*) и AArch64 MinGW (aarch64-*-mingw*). Для AArch64 также реализовали поддержку регистра FPMR (Floating Point Mode Register).
* Улучшения для Windows. Появилась поддержка режима non-stop (для Windows 10 и новее), блокировки планировщика (команда `set scheduler-locking on`) и нативных переменных Thread Local Storage (TLS). В Windows Terminal теперь работают 24-битные цвета, emoji и кодировка UTF-8 (при соответствующей кодовой странице хоста).
* Единообразие путей. Во всех интерфейсах (CLI, TUI, MI, DAP) теперь всегда используются прямые слэши в путях к файлам (например, `C:/proj/src/main.c` вместо `C:/proj/src\main.c`).
* Работа с переменными. В команде `info locals` появилась аннотация `shadowed`: она подсвечивает внешние переменные, которые перекрываются внутренними с тем же именем. Управлять этим выводом можно через `set print shadowed on|off`.
* Аргументы команд. В команды `set args`, `run`, `start` и `starti` добавили возможность передавать аргументы с символами новой строки, если они заключены в кавычки. Также появился флаг `--no-escape-args` (в GDB и gdbserver), который отключает экранирование специальных символов в аргументах.
* Трассировка и отладка. Добавили поддержку событий трассировки, которые обрабатывает библиотека libipt 2.2. Появилась начальная возможность загружать core-файлы, созданные на системах с поддержкой Intel AMX. При отладке через последовательный порт теперь можно указывать нестандартные скорости передачи.
* Помощь для новичков. В команду `help` добавили режим `essential` — он выводит обзор минимального набора команд, которые могут понадобиться начинающему пользователю.
* Новые команды. Среди них:
* `set/show/unset local-environment` (аналог `set/show/unset environment`, но влияет на окружение подпроцессов, запускаемых самим GDB);
* `save history`, `save skip`, `save user` (сохраняют в файл историю команд, операции skip и пользовательские команды);
* `info proc environ` (показывает переменные окружения процесса);
* `set/show progress-bars enabled` (управляет отображением индикаторов прогресса для длительных операций);
* псевдонимы `delete skip`, `enable skip`, `disable skip`.
* Улучшения для разработчиков. Продолжили развивать Python API и поддержку протокола GAP.
Также убрали/изменили ряд ранее имевшихся фич:
* Объявили устаревшей и намеченной к удалению 32-разрядную архитектуру s390 (s390-*).
* Убрали поддержку первой версии формата DWP (DWARF Package File), а также форматов отладочной информации stabs и mdebug.
* Прекратили возможность сохранять результат трассировки в формате CTF (Common Trace Format).
В следующей версии планируют разделить режимы Windows ABI: отдельно для GNU (код, собранный через MinGW) и для MSVC (компиляторы MSVC и Clang). В команде `set osabi` для выбора потребуется указывать `Windows-GNU` или `Windows-MSVC`. Сейчас значение Windows автоматически подбирает нужный режим в зависимости от аргумента `--target`.
https://www.mail-archive.com/info-gnu@gnu.org/msg03572.html
https://www.sourceware.org/gdb/