The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Выпуск отладчика GDB 11

20.09.2021 09:06

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

Ключевые улучшения:

  • В интерфейс TUI (Text User Interface) добавлена поддержка действий мышью и возможности прокрутки содержимого колесом мыши. Обеспечен проброс в GDB комбинаций клавиш, не обрабатываемых в TUI.
  • Добавлена поддержка механизма ARMv8.5 MTE (MemTag, Memory Tagging Extension), позволяющего привязать теги к каждой операции выделения памяти и организовать при доступе к памяти проверку указателя, который должен быть связан с корректным тегом. В протоколе удалённого управления отладкой для привязки тегов к памяти обеспечена поддержка пакетов "qMemTags" и "QMemTags".
  • Изменена логика чтения файлов конфигурации. Файл .gdbinit теперь проверяется в следующем порядке: $XDG_CONFIG_HOME/gdb/gdbinit, $HOME/.config/gdb/gdbinit и $HOME/.gdbinit. Т.е. вначале в подкаталоге config, а уже потом в домашнем каталоге.
  • В команде "break [...] if CONDITION" прекращён вывод ошибки при недопустимости условия в определённых местах, если условие допустимо хотя бы в одном случае.
  • Добавлена поддержка отладки core-дампов, сгенерированных для программ Cygwin, собранных для архитектуры x86_64.
  • Добавлена поддержка типов с фиксированной запятой, а также констант DW_AT_GNU_numerator и DW_AT_GNU_denominator.
  • Добавлена настройка "startup-quietly on|off" setting; when "on", аналогичная опции "-silent".
  • В команде "ptype" реализованы опции /x" и "/d" для выбора шестнадцатеричного или десятичного исчисления при выводе размеров и смещений. Добавлена настройка "print type hex on|off" для использования шестнадцатеричных значений в выводе команды 'ptype'.
  • В команде "inferior" при вызове без аргументов обеспечен вывод текущего объекта отладки (inferior).
  • Переработан вывод команды "info source".
  • Добавлена команда "style version foreground | background | intensity" для управления стилем нумерации версий.
  • Добавлены новые опции командной строки: "--early-init-command" ("-eix"), "--early-init-eval-command" ("-eiex"), "--qualified" (для команд '-break-insert' и '-dprintf-insert'), "--force-condition" (для команд '-break-insert' и '-dprintf-insert'), "--force" (для команды '-break-condition').
  • В команде "-file-list-exec-source-files' разрешено указание регулярных выражений для отсеивания обрабатываемых исходных файлов. В вывод добавлено поле 'debug-fully-read' для информирования о степени загрузки отладочной информации.
  • Внесены улучшения в Python API. Добавлены новые методы gdb.Frame.level() и db.PendingFrame.level() для возвращения уровня стека для объекта Frame. При срабатывании точки захвата (catchpoint) в Python API обеспечена передача gdb.BreakpointEvent вместо gdb.StopEvent. Добавлены настройки "python ignore-environment on|off" для игнорирования переменных окружения и "python dont-write-bytecode auto|on|off" для отключения записи байткода.
  • Внесены улучшения в Guile API. Добавлены новые процедуры value-reference-value, value-rvalue-reference-value и value-const-value.
  • В число обязательных сборочных зависимостей включена библиотека GMP (GNU Multiple Precision Arithmetic).
  • Прекращена поддержка платформы ARM Symbian (arm*-*-symbianelf*).


  1. Главная ссылка к новости (https://sourceware.org/piperma...)
  2. OpenNews: Выпуск отладчика GDB 10
  3. OpenNews: Проект Debian запустил сервис для динамического получения отладочной информации
  4. OpenNews: В Redox OS появилась возможность отладки программ при помощи GDB
  5. OpenNews: Для Linux представлена система динамической отладки BPFtrace (DTrace 2.0)
  6. OpenNews: Mimic - утилита для подмены похожих символов, делающая отладку кошмаром
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/55810-gdb
Ключевые слова: gdb, debug
Поддержать дальнейшую публикацию новостей на OpenNET.


Обсуждение (28) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 09:17, 20/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Есть что-нибудь лучше ддд для линукса? Помимо иды по объективным причинам.
     
     
  • 2.4, Аноним (4), 09:26, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Гидра
     
     
  • 3.33, Анонимян (?), 19:17, 22/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    С каких пор гидра это отладчик? Или вы про костыли с прикручиванием стороннего софта? По теме - под линукс есть Ида фри
     
  • 2.5, Ordu (ok), 09:33, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Мне всегда командной строки gdb хватало. Ну или emacs'овый интерфейс к gdb, если по неизвестным сорцам шаришься и объединяешь отладку с исследованием кода. emacs, конечно, на любителя, но можно предположить что любое IDE зайдёт ок, если оно позволяет с gdb общаться напрямую, в смысле не ограничивает его возможностей тем, для чего разработчикам IDE было не лень делать гуй.

    И отсюда возникает вопрос: зачем лучше? Чего тебе не хватает в ddd? Если ты сформулируешь свои запросы конкретнее, то шансов получить конструктивный ответ будет больше.

     
     
  • 3.8, Аноним (2), 10:15, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    В ddd нехватает нормального юзабельного интерфейса, для того же radare2 есть хотя бы cutter. В моём понимании нормальный интерфейс это что-то уровня ollydbg с плагинами, желательно на кутях. И чтобы хоткеи там, вот всё это.
     
     
  • 4.11, Ordu (ok), 10:44, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > В ddd нехватает нормального юзабельного интерфейса, для того же radare2 есть хотя
    > бы cutter.

    Радар с катером, ведь для реверса скорее, или для отладки на уровне машинных команд без отладочной информации. gdb для этого вообще не канает. Он исходно разрабатывался для отладки на уровне исходных текстов, и хоть он и умеет дизассемблировать, но делает это наитупейшим образом. Чисто теоретически поверх можно напилить скриптов, чтобы как-то справляться, но практически проще взять радар/катер. Может быть даже запилить ещё один аналог им с нуля будет проще, чем всё это скриптописательство поверх gdb. И поэтому не стоит ждать от графической морды к gdb, что она вдруг сделает отладку без сорцов любовной и прельстивой.

    Или ты не об этом? Мне все эти идеи, типа "надо делать как в radare/cutter/ollydbg" мало о чём говорят. Я хрен его сколько времени пользовался исключительно gdb, а когда сталкивался с другими, не столько смотрел, что тут хорошего, сколько матерился по-поводу того, что сделано не так как в gdb, типа "блин, как тут сделать finish?", "эта кнопка на тулбаре -- аналог continue? или next? или step?" или "вах, бряк прокнул, но не должен был, как посмотреть бектрейс и подняться до самого интересного стекового фрейма?", или "как поставить бряк на память?".

     
     
  • 5.13, Аноним (2), 11:04, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В том и дело, что чаще всего сегфолтятся бинарные продукты и пойди разберись, в каком месте и из-за чего. Бывает, что символы есть, и символы обычно есть для системных либ. Нужен хотя бы какой-то минимум без лишних проблем. Опять же, были какие-то сложности отладки мультипоточной приложухи в gdb, довольно неудобненько. Интуитивно понятный интерфейс типа иды тоже неплохо бы заиметь (а в ней есть отладчик).
     
  • 4.12, andy (??), 10:49, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    layout asm не хватает? В таком случае, есть питонообертки:
    https://github.com/longld/peda
    https://gef.readthedocs.io/en/master/

    Или, довольно скверная, имитация Soft-ICE:
    https://github.com/mammon/gdbinit

     
  • 2.14, Аноним (14), 11:46, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Есть: QT Creator Debugger. https://doc.qt.io/qtcreator/creator-debugging.html
     
  • 2.21, Аноним (21), 15:22, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/nakst/gf
     
  • 2.26, lockywolf (ok), 17:15, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    DDD умер, он не использует MI. Я использую емакс-интерфейс, но говорят, что в clion очень годный интерфейс к gdb и lldb.
     
  • 2.27, Урри (ok), 19:17, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    vscode с c++ плагином.
     

  • 1.9, joda (?), 10:40, 20/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Можно ли использовать GDB для отладки самописного ядра в виртуалке? С какими виртуалками он вообще интегрируется?
     
     
  • 2.17, Аноним (17), 12:46, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    для отладки самописного ядра отлично подходит qemu, прямо в нём есть примитивный встроенный отладчик, а также какой-то механизм для запуска отладочного моста в gdb(см. ключи запуска -s -S)
     
  • 2.18, Совершенно другой аноним (?), 13:17, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Тут выше предложили qemu, можно ещё добавить bochs - там и довольно неплохой встроенный отладчик был (с поддержкой распечатки таблиц gdt и idt и страничного отображения памяти), и поддержка gdb, если не путаю, тоже присутствовала.
     
     
  • 3.19, joda (?), 14:42, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А как этим встроенным отладчиком пользоваться? Например как поставить брейкпоинт в самом начале кода загрузчика?

    Аналогичный вопрос и к анонимусу выше, про встроенный отладчик в qemu.

     
     
  • 4.20, Совершенно другой аноним (?), 15:13, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > А как этим встроенным отладчиком пользоваться? Например как поставить брейкпоинт в самом
    > начале кода загрузчика?
    > Аналогичный вопрос и к анонимусу выше, про встроенный отладчик в qemu.

    там есть консоль, есть диалоговый режим аналогичный таковому в gdb, есть встроенная справка (команда help). Если правильно помню - команда lb 0x7c00 (можно и b 0x7c00). Правда не уверен, что в дистрибутивах он идёт собранный с отладчиком. Но собрать его, по крайней мере раньше, была не большая проблема, даже в windows вполне себе нормально собирался и работал.

     

  • 1.10, Аноним (10), 10:43, 20/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Он все такой же кривой по сравнению с TD или что то улучшилось? Просто он используется в Lazarus и очень, если честно, бесит, что там голый АСМ приходится отлаживать нажатием специальных кнопочек вверху окна GDB вместо того, чтобы просто жать F7 и F8. В этом плане было очень круто, что TD полностью интегрирован со средой разработке, а не является отдельным кривым шматком, с которым очень трудно работать.
     
     
  • 2.15, пох. (?), 12:06, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    для поциентов с синдромом утенка - ничего не улучшилось и не улучшится никогда.

    > В этом плане было очень круто, что TD полностью интегрирован со средой разработке

    просто поставь винду и VisualStudio - там все как ты любишь. Дельфя только сдохла в корчах, но в этом никто не виноват.

    gdb полностью интегрирован со средой разработки, только эта среда называется - unix, а не турбопаскаль.

    В частности кнопочки "F7" может т-по не быть среди доступных.

     
     
  • 3.16, пох. (?), 12:28, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    хотя нет, вру что не улучшилась - мыш! Мыш вот, приделали! С колесом!

    (для пуссиэкзешников очень удобная шняга, наверное)

     
  • 3.22, Аноним (22), 15:22, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Грешно смеяться над больными людьми.
     
  • 3.23, n00by (ok), 15:26, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ради интереса набрал в поисковике Lazarus + GDB, читаю:

    "Если вы входите в «Nested», то IDE позволяет вам проверять переменные из обоих стековых фреймов."

    https://wiki.lazarus.freepascal.org/GDB_Debugger_Tips/ru#.D0.92.D0.BB.D0.BE.D0

    Похоже, дело не в GDB.

     

  • 1.24, Аноним (24), 15:37, 20/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >В в интерфейс TUI (Text User Interface) добавлена поддержка действий мышью и возможности прокрутки содержимого колесом мыши.

    Джвадцать лет ждал (серьёзно). Ну ещё бы сам TUI сделали на манер mcedit, например.

     
     
  • 2.25, llolik (ok), 15:43, 20/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    cgdb есть на манер vim-а. Есть правда несколько неприятных багов в master, но в целом, работает нормально.
     

  • 1.28, Аноним (-), 19:59, 20/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Конечно Watcom старались над своим отладчиком. Он получился очень гуд. Что то по типу TD, но под nix. Но такое наверное никто не повторит - это шедевр.
    GDB конечно своеобразен, и им можно исследовать, но все хотят наглядности с окошечками. Здесь F7 а там стек поменялся и EIP увеличился. Да и некоторые переменные тоже приятно наблюдать, как в гидре, в ольке.
    Могут конечно доделать, но не хотят, они так привыкши, и другие привыкнут.
    >>>

    ЗЫ. Почему все молчат про Клайва Синклера?
    >>>

     
     
  • 2.30, n00by (ok), 08:20, 21/09/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > ЗЫ. Почему все молчат про Клайва Синклера?

    Потому что он скаммерсант, а не "изобретатель ZX Spectrum", как пишут на habr?

    Аппаратную часть ZX Spectrum 16K/48K разработал Ричард Альтвассер (Richard Altwasser) из «Sinclair Research», корпус машины был создан промышленным дизайнером Риком Дикинсоном (Rick Dickinson). Программное обеспечение для нового компьютера разработал Стив Викерс (Steve Vickers) по контракту с компанией «Nine Tiles Ltd», в которой был создан «Sinclair BASIC».

     
     
  • 3.31, Аноним (31), 15:13, 22/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Илон Маск поди тоже не сам лично свои ракеты разрабатывает.
     
     
  • 4.32, n00by (ok), 15:38, 22/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Илон Маск ... тоже

    Вы идёте по очень тонкому льду. О мёртвых либо хорошо, либо ничего, кроме правды.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:
    При перепечатке указание ссылки на opennet.ru обязательно



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру