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

8 октября 2016 года

Доступен релиз отладчика GDB 7.12, поддерживающего отладку на уровне исходных текстов для широкого спектра языков программирования (Ada, C, C++, Objective-C, Pascal, Go и т.д.) на различных аппаратных (i386, amd64, ARM, Power, Sparc и т.д.) и программных платформах (GNU/Linux, Unix, Windows, macOS).

Ключевые улучшения (Архивная копия от 30 мая 2022 на Wayback Machine):

  • По умолчанию для сборки применён компилятор C++. Возможность сборки компилятором Си сохранена, но требуется указание опции "--disable-build-with-cxx". В будущем будет оставлена только возможность сборки компилятором С++;
  • Реализована поддержка отладки программ, написанных на языке Rust;
  • Добавлена новая целевая платформа Andes NDS32 (nds32*-*-elf);
  • В средствах отладки программ на языке Фортран добавлена поддержка массивов и структур с полями на основе динамических типов;
  • Улучшения, связанные с Python API, в том числе добавлена функция $_as_string(val) для преобразования значения в строковое представление и расширена поддержка точек останова (в объекты gdb.Breakpoint добавлен атрибут "pending", реализованы новые события

gdb.breakpoint_created, gdb.breakpoint_modified и gdb.breakpoint_deleted);

  • В команде 'x' обеспечена возможность указания отрицательного счётчика повторов для изучения содержимого памяти в обратную сторону, относительно текущего адреса, например:

(gdb) bt
#0 Func1 (n=42, p=0x40061c "hogehoge") at main.cpp:4
#1 0x400580 in main (argc=1, argv=0x7fffffffe5c8) at main.cpp:8

(gdb) x/-5i 0x0000000000400580
0x40056a : mov %edi,-0x4(%rbp)
0x40056d : mov %rsi,-0x10(%rbp)
0x400571 : mov $0x40061c,%esi
0x400576 : mov $0x2a,%edi
0x40057b :
callq 0x400536

  • В случае краха (SIGSEGV) из-за блокировки выхода за границы буфера средствами Intel MPX теперь показывается тип переполнения, границы буфера и область куда был совершён выход;

Program received signal SIGSEGV, Segmentation fault
Upper bound violation while accessing address 0x7fffffffc3b3
Bounds: [lower = 0x7fffffffc390, upper = 0x7fffffffc3a3]
0x0000000000400d7c in upper () at i386-mpx-sigsegv.c:68

  • В команде "catch syscall" обеспечена возможность извлечения группы связанных системных вызовов при указании префикса 'group:' или 'g:';
  • В GDBserver добавлена возможность записи btrace без необходимости поддержания активного соединения с GDB, для платформ s390-linux,

s390x-linux, powerpc64-linux и powerpc64le-linux добавлена поддержка обычных и быстрых точек трассировки;

  • Новые команды:
  • skip -file file
  • skip -gfile file-glob-pattern
  • skip -function function
  • skip -rfunction regular-expression (обобщённый вариант команды skip с поддержкой масок в именах файлов и регулярных выражений для имён функций);
  • maint info line-table REGEXP (показывает содержимое внутренней структуры line-table);
  • maint selftest (запускает любой вкомпилированный unit-тест)
  • new-ui INTERP TTY (запускает новый экземпляр интерфейса пользователя, используя указанный в поле INTERP интерпретатор и файл TTY для ввода/вывода);
  • Прекращена поддержка протоколов и систем мониторинга ПЗУ:
  • target m32rsdi (удалённая отладка M32R поверх SDI);
  • target mips (протокол удалённой отладки MIPS);
  • target pmon (PMON ROM monitor)
  • target ddb (DDB-вариант PMON для Vr4300 от компании NEC);
  • target rockhopper (вариант PMON для RockHopper от компании NEC);
  • target lsi (вариант PMO от LSI).

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Выпуск отладчика GDB 7.12», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.