GDB (также известный как отладчик проекта GNU) - это программное обеспечение с открытым исходным кодом и бесплатное программное обеспечение командной строки, которое позволяет пользователям и разработчикам видеть, что происходит внутри «другой» программы, выполняется или почему приложение сбой в определенный момент.
Особенности с первого взгляда
Ключевые функции включают в себя четыре разных метода, помогающих разработчикам ловить ошибки в действии, запускать приложение и указывать что-либо, что может повлиять на его поведение, останавливать программу в определенных условиях, проверять журналы, когда приложение терпит крах, постепенно менять вещи в Он также поддерживает отладку программ, написанных на широком спектре языков программирования, включая C, C ++, Pascal , Ada, Objective-C и многие другие.
Это приложение командной строки
Отладчик проекта GNU - это всегда приложение командной строки. Чтобы использовать его, вы должны запустить & ldquo; gdb & rdquo; команду в эмуляторе терминала, затем выполните команду & ldquo; help & rdquo; команда (без кавычек) - приглашение gdb. Кроме того, вы также можете ввести & ldquo; help all & rdquo; команду, чтобы просмотреть список всех команд, введите «help», а затем имя команды, чтобы просмотреть полную документацию, введите «help», а затем имя класса, чтобы просмотреть список команд в этом классе, чтобы ввести «apropos word» для поиска для команд, связанных со словом.
Список классов команд
После ввода команды & ldquo; help & rdquo; команда, как описано выше, вы увидите список классов команд, включая псевдонимы (отображает псевдонимы других команд), контрольные точки (заставляет программу останавливаться в определенных точках), данные (для изучения данных), файлы (для проверки файлов) , внутренности (команды обслуживания), неясные (скрытые функции), запуск (для запуска программы), стек (для проверки стека), статус (для запросов статуса), поддержка (для вспомогательных средств), контрольные точки (для отслеживания выполнения программы без остановка программы) и пользовательские (пользовательские команды).
Поддерживаемые аппаратные платформы и ОС
GDB был разработан из смещения, чтобы быть кросс-платформенным приложением, работающим на основных операционных системах, таких как Microsoft Windows и некоторые из самых популярных вариантов Linux / UNIX. Он поддерживается как на 32-битных, так и на 64-битных аппаратных платформах.
Что нового в этой версии:
- PR gdb / 22824 (вводящее в заблуждение описание новой функции rbreak Python в файле GDB 8.1 NEWS)
- PR gdb / 22849 (ctrl-c не работает в расширенном удаленном режиме)
- PR gdb / 22907 ([Регрессия] gdbserver не работает с только именами файлов)
- PR gdb / 23028 (несогласованный дизассемблирование vcvtpd2dq)
- PR gdb / 23053 (Fix -D_GLIBCXX_DEBUG gdb-add-index регрессия)
- PR gdb / 23127 ([AArch64] GDB не может использоваться для отладки программного обеспечения, использующего высокие виртуальные адреса)
- PR-сервер / 23158 (gdbserver больше не работает в Windows)
- PR breakpoints / 23210 ([8.1 / 8.2 Регрессия] Адрес точки останова Bogus скорректирован с 0xf7fe7dd3 на 0xfffffffff7fe7dd3)
Что нового в версии 8.1:
- Точки останова на функциях C ++ теперь установлены по всем областям по умолчанию («дикое» сопоставление);
- Поддержка вставки точек останова для функций, отмеченных тегами ABI в C ++;
- Целевая арифметическая эмуляция с плавающей запятой во время оценки выражения (требуется MPFR 3.1 или новее);
- Различные улучшения скриптов Python;
- Улучшена поддержка ржавчины; в частности, объекты Trait теперь могут быть проверены при отладке кода Rust,
- GDB больше не делает предположений о типе символов без отладки информации, чтобы избежать появления ошибочных и часто запутывающих результатов;
- Команды «enable» и «disable» теперь принимают диапазон мест точек останова;
- Новая команда «starti» для запуска программы при первой инструкции;
- Новая команда «rbreak» для вставки нескольких точек останова через шаблон регулярного выражения (требуется Python);
- Теперь команда «ptype» поддерживает печать смещения и размера полей в структуре;
- Команда gcore теперь поддерживает сброс всех сопоставлений памяти (опция -a 'командной строки);
- Новые ярлыки для режима Single-Key TUI: 'i' для stepi и 'o' для nexti;
- Усовершенствования GDBserver:
- Поддержка передачи переменных среды в GDBserver;
- Поддержка запуска нижестоящих процессов с указанным начальным рабочим каталогом;
- В системах Unix поддержка расширения подстановки и замена переменных ниже аргументов командной строки;
- Различные улучшения завершения;
- Команда, используемая для компиляции и ввода кода с помощью команды «компиляция», теперь настраивается;
- Новая опция командной строки '--readnever' для ускорения запуска GDB, когда отладочная информация не нужна;
- Поддержка следующих новых исходных конфигураций:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / arm (arm * - * - freebsd *);
- Поддержка следующих новых целей:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / arm (arm * - * - freebsd *);
- OpenRISC ELF (or1k * - * - эльф)
- Удалена поддержка следующих целей и исходных конфигураций:
- Solaris2 / x86 (i? 86 - * - solaris2. [0-9]);
- Solaris2 / sparc (sparc * - * - solaris2. [0-9]);
Что нового в версии:
- Для создания этой версии GDB теперь требуются следующие инструменты:
- Компилятор C ++ - 11 (например, GCC 4.8 или новее);
- GNU сделать версию 3.81 или новее.
- Изменения в этом выпуске включают:
- C ++: поддержка ссылок rvalue
- Усовершенствования скриптов Python:
- Новые функции для запуска, остановки и доступа к текущей записи btrace.
- Поддержка ссылок Rvalue в gdb.Type.
- интерпретатор команд GDB:
- Пользовательские команды теперь принимают неограниченное количество аргументов.
- "eval" теперь расширяет пользовательские аргументы.
- Поддержка DWARF версии 5
- (обратите внимание, что его индекс .debug_names еще не поддерживается).
- Улучшения GDB / MI:
- Команда New -file-list-shared-libraries для отображения разделяемых библиотек в программе.
- Команда New -target-flash-erase, чтобы стереть флеш-память.
- Поддержка родных FreeBSD / mips (mips * - * - freebsd)
- Поддержка следующих целей:
- Synopsys ARC (arc * - * - elf32)
- FreeBSD / mips (mips * - * - freebsd)
- Другие улучшения:
- Перенаправление командной строки теперь поддерживается на хостах MS-Windows.
- Поддержка имен потоков в MS-Windows.
- Поддержка реестра PKU в GNU / Linux.
- Поддержка описаний целей для sparc32 и sparc64.
- Новая команда GDB / CLI для удаления флэш-памяти
- Поддержка rdrand и rdseed для записи / воспроизведения.
- Была удалена поддержка следующих функций:
- Поддержка Java-программ, скомпилированных с помощью gcj
- Поддержка следующих конфигураций:
- FreeBSD / alpha (alpha * - * - freebsd *)
- GNU / kFreeBSD / alpha (alpha * - * - kfreebsd * -gnu)
Что нового в версии 7.9.1:
- PR build / 18033 (комментарий к стилю C ++, используемый в gdb / iq2000-tdep.c и gdb / compile / compile - *. c)
- Команда PR build / 18298 (команда «компиляция» не может найти компилятор, если инструменты, настроенные с помощью триплета вместо четверки)
- PR tui / 18311 (случайный SEGV при отображении регистров в режиме TUI)
- PR python / 18299 (исключение при регистрации глобального довольно принтера в подробном режиме)
- PR python / 18066 (аргумент «слово» кажется сломанным в Command.complete (текст, слово))
- PR pascal / 17815 (Исправлено поведение паскаля для полей класса с тестовой записью)
- PR python / 18285 (ptype expr-with-xmethod вызывает SEGV)
Что нового в версии 7.9:
- Усовершенствования сценариев Python.
- Компиляция исходного кода и вставка в нижнюю.
- Новые команды, параметры, удобные переменные / параметры.
- Поддержка MIPS SDE (mips * -sde * -elf *).
- Улучшена обработка сигналов при отладке потоковых программ.
Что нового в версии 7.8.2:
- PR symtab / 17642 ([7.8 регрессия] внутренняя -error: resolve_dynamic_struct: утверждение `TYPE_NFIELDS (type) & gt; 0 'не выполнено.)
- PR binutils / 17677 (_bfd_elf_get_synthetic_symtab работает в сложности O (n ^ 2))
- PR gdb / 16215 (SPARC: не может вычислить CFA для этого кадра)
- PR gdb / 17525 (команды target-async: breakpoint не выполняются при запуске программы из -x)
- PR cli / 17828 ([7.8 регрессия] -batch -ex r разрывает терминал)
Что нового в версии 7.8.1:
- PR python / 17364 (нужны имена принтеров в bound_registers.py)
- PR build / 17104 (CFLAGS = "-Wall -Wextra" gdb / confgure -with-babeltrace не работает)
- PR gdb / 17345 (babeltrace (1.1.2 и более поздняя версия) жалуется на данные ctf, созданные GDB)
- PR build / 17298 (gcore: не удалось получить регистры: нет такого процесса)
- PR python / 17342 (Xmethod Python не совместим с Python 3)
- PR python / 17355 (Crash on Python с фильтрами с нечитаемым аргументом)
- PR guile / 17367 (вычисление пути гильдии неверно, когда скрипт pkg-config поставляется как arg to -with-guile)
- PR gdb / 17247 (gdb зависает в многопоточном приложении)
- PR gdb / 17347 (Регрессия: GDB остановлен при запуске с подключенным процессом)
- PR gdb / 17407 (чтение регрессии для Linux vDSO)
- PR-сервер / 17457 (aarch64 / gdbserver: неправильный просмотр регистров с плавающей запятой)
- PR-сервер / 17487 (state- & gt; dr_control_mirror == 0 неудачное утверждение в gdbserver в Windows)
- PR gdb / 17472 (с аннотациями, ввод при выполнении на переднем плане сбоев readline / gdb)
- PR gdb / 17471 (повторение команды фона делает ее передним планом)
- PR cli / 17300 (сбой в режиме без остановки с продолжением -a & (readline_callback_read_char (), вызванный без обработчика!))
- PR python / 17372 (python зависает при отображении справки ())
- PR python / 17408 (../../gdb/infrun.c:5256: внутренняя ошибка: switch_back_to_stepped_thread: утверждение `! schedlock_applies (1) 'не выполнено.)
Что нового в версии 7.8:
- Поддержка скриптов Guile.
- Усовершенствования сценариев Python.
- Новые команды, параметры, удобные переменные / параметры.
- Усовершенствования удаленного протокола и GDBserver.
- Новые целевые конфигурации (PowerPC64 GNU / Linux малоподобные).
- Улучшения btrace.
- Поддержка автоматических массивов переменной длины ISO C99.
- «Сравнительные разделы» команда теперь работает во всех целях.
- «Направляющая нагрузка» команда теперь подключается к исходной цели.
Что нового в версии 7.7:
- Улучшенная поддержка сценариев на Python.
- Некоторые улучшения C ++.
- Новые команды, параметры, удобные переменные / параметры.
- Несколько новых команд и улучшений GDB / MI.
- Усовершенствования удаленного протокола и GDBserver.
- Новые целевые конфигурации (Nios II, TI MSP430).
- Поддержка GDB Windows x64 для поддержки данных.
- Поддержка SystemTap SDT-зондов на сервере AArch64 GNU / Linux.
- Поддержка CTF (общий формат трассировки).
- Новые скрипты gcore и gdb-add-index.sh.
- Улучшена поддержка рук * -linux для записи / воспроизведения.
- Убрана поддержка устаревших конфигураций NetBSD и OpenBSD. Варианты ELF этих конфигураций поддерживаются.
- «set | show remotebaud» команды устарели в пользу «show | show serial baud».
Что нового в версии 7.6.2:
- PR breakpoint / 16251 (ошибка аппаратной прерывания AArch64 после вилка)
- PR gdb / 16303 (GDB 7.6.1 не работает с binutils 2.24 на MIPS16 и microMIPS)
Что нового в версии 7.6.1:
- PR tdep / 15420 (Невозможно отлаживать потоковые программы в новых версиях x86-solaris - Solaris 10, Update 10 или новее)
- PR remote / 15455 (удаленный пакет QTro не работает)
- PR build / 15476 (Сбой сборки из-за неполного перечисления в utils.h)
- PR-сервер / 15594 (поддержка tls в 64x32 x86 gdbserver не расширяет адрес до 64 бит)
- PR-сервер / 15075 (dprintf объединяется с "next")
- PR-сервер / 15434 (dprintf использует синхронный «continue» даже в режиме без остановок)
- PR tui / 14880 (в макетах с расщепленным регистром, результат приводит к ошибке утверждения в value.c)
- PR c ++ / 15519 (GDB 7.6 на 94x медленнее, чем GDB 7.5.1, используя определенный файл ядра)
- PR gdb / 15837 (GDB печатает значения ввода для локальных переменных)
- PR gdb / 15415 (gdb разрешает символические ссылки при передаче argv [0])
- PR cli / 15603 (CTRL-C больше не может прерывать ниже)
- PR gdb / 15604 (утечка сокета gdbserver 7.5 регрессия)
Что нового в версии 7.5:
- Перейти на языковую поддержку.
- Новые цели (x32 ABI, microMIPS, Renesas RL78, HP OpenVMS ia64).
- Дополнительные улучшения для Python.
- Поддержка зондов SDT (Static Defined Tracing) с помощью зондов SystemTap.
- Улучшения GDBserver (соединения stdio, целевая оценка условий точки останова, усовершенствования удаленного протокола).
- Другие различные улучшения (возможность остановки при загрузке / выгрузке разделяемой библиотеки, динамическом printf и т. д.).
- Обратная отладка на ARM.
- Двоичный "gdbtui" был оставлен и больше не может быть построен. Использовать & quot; gdb -tui & quot; вместо этого.
Что нового в версии 7.4:
- Неоднозначные параметры линии теперь обрабатываются более последовательно.
- Неинтересные функции и файлы теперь могут быть пропущены при переходе с помощью функции пропусков & quot; и "пропустить файл" команды.
- Добавлены команды для установки и получения максимального предела длины удаленной целевой сторожевой точки.
- Сценарии Python были значительно улучшены.
- Было сделано много других улучшений, исправлений и общих изменений.
Что нового в версии 7.1:
- Поддержка новых целей (включая симулятор):
- Xilinx MicroBlaze
- Renesas RX
- Основные новые функции:
- Многопрограммная отладка, позволяющая отладчику управлять более чем
- одна программа в том же сеансе GDB.
- Отладка независимой исполняемой команды (PIE).
- Он также содержит множество улучшений и исправлений ошибок, в том числе:
- Поддержка Python была расширена.
- Улучшения поддержки C ++ (пространство имен, операторы приведения, исправления ошибок)
- Улучшения поддержки трассировки.
- Улучшение записи процесса (сохранение / восстановление журнала выполнения, аппаратное обеспечение
- поддержка точек наблюдения).
- Усовершенствования удаленного протокола (отладка ядра Linux, новые пакеты
- для поддержки трассировки)
Комментарии не найдены