GDB (також відомий як налагоджувач проекту GNU Project) - це програмне забезпечення з відкритим кодом і вільним командним рядком, яке дозволяє користувачам і розробникам бачити те, що відбувається всередині іншої програми, тоді як це виконано, або чому програма збірається в певному пункті.
Особливості з першого погляду
Ключові функції включають в себе чотири різних способи, які допомагають розробникам виявляти помилки в дії, запускати додаток та вказувати що-небудь, що може вплинути на його поведінку, зупинити програму в певних умовах, перевіряти журнали при впакуванні програми, поступово змінювати речі програма для експерименту з виправленням ефектів однієї проблеми та продовження, вивчаючи про іншу помилку. Він також підтримує налагодження програм, написаних на широкому діапазоні мов програмування, включаючи C, C ++, Pascal. , Ada, Objective-C та багато інших.
Це програма командного рядка
Налагоджувач проекту GNU - це завжди буде застосунок командного рядка. Щоб використовувати його, ви повинні запустити & ldquo; gdb & rdquo; команду в емуляторі термінала, потім виконайте команду & ldquo; довідку & rdquo; команда (без лапок) - підказка gdb. Крім того, ви також можете ввести & ldquo; допомогти всім & rdquo; команду, щоб переглянути список всіх команд, введіть "help", після чого введіть назву команди, щоб переглянути повну документацію, введіть "help", а потім назву класу, щоб переглянути список команд у цьому класі, щоб ввести слово "apropos word" для пошуку для команд, пов'язаних з "словом".
Список класів команд
Після введення команди & ldquo; допомогти & rdquo; як описано вище, ви побачите список класів команд, включаючи псевдоніми (відображає псевдоніми інших команд), точки останова (робить програму зупинятися у певних точках), дані (для вивчення даних), файли (для розгляду файлів) , внутрішні (команди обслуговування), неясність (незрозумілі функції), запуск (для запуску програми), стека (для вивчення стеку), статусу (для запитів статусу), підтримки (для служб підтримки), tracepoints (для відстеження виконання програми без зупинка програми) і користувальницькі (визначені користувачем команди)
Підтримувані апаратні платформи та операційні системи
GDB був розроблений з офсетного поля як крос-платформне додаток, що працює на основних операційних системах, таких як Microsoft Windows і деякі з найпопулярніших варіантів Linux / UNIX.
- PR gdb / 22824 (вводять в оману опис нової функції "Python" в файлі GDB 8.1 NEWS)
- PR gdb / 22849 (ctrl-c не працює на розширеному пульті)
- PR gdb / 22907 ([Regression] gdbserver не працює з двома файлами)
- PR gdb / 23028 (непослідовне розбирання vcvtpd2dq)
- PR gdb / 23053 (Fix -D_GLIBCXX_DEBUG gdb-add-index regression)
- PR gdb / 23127 ([AArch64] GDB не можна використовувати для налагодження програмного забезпечення, що використовує високі віртуальні адреси)
- PR-сервер / 23158 (gdbserver більше не працює на Windows)
- значення точки зупинки PR / 23210 ([8.1 / 8.2 Regression] адреса Bogus Breakpoint скоригована з 0xf7fe7dd3 на 0xffffffff7f7dd3)
Що нового у версії 8.1:
- Порожні точки на функціях C ++ тепер встановлюються для всіх областей за умовчанням (& quot; дикий "відповідність);
- Підтримка вставки точок зупинки на функції, позначені тегами C ++ ABI
- Арифметична емуляція з плаваючою точкою цілі під час оцінки експресії (потрібна MPFR 3.1 або пізніша версія);
- Різні поліпшення сценаріїв Python;
- Покращена підтримка іржі; зокрема, об'єкти Trait тепер можуть бути перевірені при налагодженні коду Rust;
- GDB більше не робить припущень щодо типу символів без налагодження інформації, щоб уникнути помилкових та часто незрозумілих результатів;
- Команди "увімкнути" та "вимкнути" тепер приймають діапазон точок відмови "
- Нова команда "start" для запуску програми при першій інструкції
- Нова команда 'rbreak' для вставки декількох точок зупинки за допомогою шаблону регулярного виразу (потрібен Python);
- Тепер команда 'ptype' підтримує друк зсуву та розміру полів у структурі;
- Команда gcore тепер підтримує скидання всіх відображень пам'яті (опція командного рядка '-a');
- Нові ярлики для режиму TUI Single-Key: "I" для stepi та "o" для nexti;
- Покращення GDBсервера:
- Підтримка передачі змінних оточення GDBserver;
- Підтримка для запуску нижчих процесів із зазначеним початковим робочим каталогом;
- У системах Unix, підтримка розширення globbing та змінна заміна невірних аргументів командного рядка;
- Різні поліпшення завершення;
- Тепер команда, яка використовується для компіляції та введення коду за допомогою команди 'compile', налаштовується;
- Нова опція командного рядка "--readnever" для швидкого запуску GDB, коли інформація про налагодження не потрібна;
- Підтримка наступних нових вітчизняних конфігурацій:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / arm (arm * - * - freebsd *);
- Підтримка наступних нових цілей:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / arm (arm * - * - freebsd *);
- OpenRISC ELF (or1k * - * - elf)
- Вилучено підтримку для наступних цілей та рідної конфігурації:
- 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.
- Підтримка посилання на RVue в gdb.Type.
- інтерпретатор команд GDB:
- Команди користувача тепер приймають необмежену кількість аргументів.
- "eval" & quot; Тепер команда розширює користувальницькі аргументи.
- Підтримка DWARF версії 5
- (зауважте, що його індекс .debug_names ще не підтримується).
- Удосконалення GDB / MI:
- Нова команда -file-list-shared-бібліотек для переліку загальних бібліотек у програмі.
- Нова команда -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 gdb / iq2000-tdep.c та gdb / compile / compile - *. c)
- PR build / 18298 (команда & quot; компілювати & quot; не може знайти компілятора, якщо інструменти налаштовані з триплетом замість чотирьох)
- PR tui / 18311 (випадковий SEGV при відтворенні регістрів у режимі TUI)
- PR python / 18299 (виняток при реєстрації глобального гарного принтера в режимі активного)
- PR python / 18066 (аргумент "слово" здається розбитим у командному файлі (text, word))
- PR Pascal / 17815 (Виправте поведінку паскала для полів класу з тестовою темою)
- PR python / 18285 (ptype expr-with-xmethod викликає SEGV)
Що нового у версії 7.9:
- Покращення сценаріїв Python.
- Виготовлення вихідного коду та ін'єкція в нижчий.
- Нові команди, параметри, зручності змінних / параметри.
- Підтримка MIPS SDE (mips * -sde * -elf *).
- Краща обробка сигналів при налагодженні різьбових програм.
- PR symtab / 17642 ([7.8 regression] internal)
- PR binutils / 17677 (_bfd_elf_get_synthetic_symtab працює в O (n ^ 2) складності)
- PR gdb / 16215 (SPARC: не може обчислити CFA для цього кадру)
- PR gdb / 17525 (команди target-async: точки припинення не виконуються при запуску програми з -x-скрипту)
- PR cli / 17828 ([7.8 regression] -batch -ex r порушує термінал)
Що нового в версії 7.8.2: -ресурс: resolve_dynamic_struct: твердження `TYPE_NFIELDS (type)> 0 'не вдалося.)
Що нового в версії 7.8.1:
- PR python / 17364 (потрібні кращі імена принтера в bound_registers.py)
- PR build / 17104 (CFLAGS = "-Wall -Wextra" gdb / configurewithwith babeltrace не вдається)
- PR gdb / 17345 (babeltrace (1.1.2 і пізніші) скаржиться на дані ctf, створені GDB)
- PR build / 17298 (gcore: не вдається отримати регістри: немає такого процесу)
- PR python / 17342 (Xmethod Python не сумісний з Python 3)
- PR python / 17355 (аварія на фільтрах Python з незчислими аргументами)
- PR guile / 17367 (обчислення шляху гільдії невірно, коли сценарій pkg-config постачається як arg для -with-guile)
- PR gdb / 17247 (gdb зависає в багатопотоковій програмі)
- PR gdb / 17347 (Регресія: GDB зупинено на запуску з доданим процесом)
- PR gdb / 17407 (регресія для читання Linux vDSO)
- PR-сервер / 17457 (aarch64 / gdbserver: відображаються невірні регістри з плаваючою комою)
- PR-сервер / 17487 (state-> 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:
- Покращення сценаріїв Python.
- Нові команди, параметри, зручності змінних / параметри.
- Додатки для віддаленого протоколу та GDBserver.
- Нова конфігурація цілей (PowerPC64 GNU / Linux small-endian).
- вдосконалення btrace.
- Підтримка автоматичних масивів з змінною довжиною ISO C99.
- "Порівняння розділів" & quot; команда тепер працює на всіх цілях.
- "Націлена на рідну" & quot; команда тепер підключається до рідної цілі.
Що нового у версії 7.7:
- Покращена підтримка сценаріїв Python.
- Деякі поліпшення C ++.
- Нові команди, параметри, зручності змінних / параметри.
- Деякі нові команди та вдосконалення GDB / MI.
- Додатки для віддаленого протоколу та GDBserver.
- Нові цільові конфігурації (Nios II, TI MSP430).
- Підтримка GDB Windows x64 розгортання даних.
- Підтримка SystemTap SDT зондів на AArch64 GNU / Linux.
- CTF (Common Trace Format).
- Нові скрипти gcore і gdb-add-index.sh.
- Покращена підтримка запису / відтворення arm * -linux
- Видалено підтримку застарілих конфігурацій NetBSD та OpenBSD. ELF варіанти цих конфігурацій підтримуються.
- Налаштування & quot; set | remote remote & quot; команди застаріли на користь "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, оновлення 10 або пізнішої версії)
- Пульт дистанційного керування PR / 15455 (зламаний пакет віддалених QTro)
- PR build / 15476 (Неможливо зібрати з-за неповного типу переліку у utils.h)
- PR-сервер / 15594 (підтримка tls у форматі 64x32 x86 gdbserver не розширює адресу до 64 біт)
- PR-сервер / 15075 (dprintf інтегрується з & quot; наступним & quot;)
- PR-сервер / 15434 (dprintf використовує синхронне "продовження" навіть у режимі без зупинки)
- PR tui / 14880 (у розбитих регістраних макетах, що призводять до відмови в підтвердженні значення. 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 (деградація гетерогенного гнізда 7,5 регресії)
Що нового у версії 7.5:
- Підтримка мовлення
- Нові цілі (x32 ABI, microMIPS, Renesas RL78, HP OpenVMS ia64).
- Покращення сценаріїв Python.
- SDT (Static Defined Tracing) з підтримкою зондів SystemTap.
- Покращення GDBserver (підключення stdio, цільова сторона оцінки стану точки припинення, вдосконалення віддаленого протоколу).
- Інші різноманітні вдосконалення (можливість зупинки, коли загальнодоступна бібліотека завантажується / вивантажується, динамічна printf тощо).
- Зворотне налагодження на ARM.
- Двійкове "gdbtui" & quot; був залишений і більше не може бути побудований. Використовуйте & quot; gdb-toi & quot; замість цього.
Що нового у версії 7.4:
- Поточні строкові ознаки тепер обробляються послідовніше.
- Незацікавлені функції та файли тепер можуть бути пропущені після переходу за допомогою функції & quot; пропустити & quot; і "Пропустити файл" & quot; команди.
- Додано команди для встановлення та отримання максимально допустимих лімітів віддаленої апаратної точки спостереження.
- Сценарії Python були значно покращені.
- Зроблено багато інших вдосконалень, виправлень та загальних змін.
Що нового у версії 7.1:
- Підтримка нових цілей (включаючи симулятор):
- Xilinx MicroBlaze
- Renesas RX
- Основні нові функції:
- Багатопрограмна налагодження, що дозволяє відладчику контролювати більше, ніж
- одна програма в межах одного сеансу GDB
- Позиція незалежної виконуваної (PIE) налагодження.
- У ньому також є багато розширень та виправлень, зокрема:
- Підтримка Python була розширена.
- Покращення підтримки C ++ (простору імен, оператори листи, виправлення помилок)
- Покращення підтримки Tracepoint.
- Покращення обробки запису (збереження / відновлення журналу виконання, апаратного забезпечення
- Підтримка watchpoint.
- Покращення віддаленого протоколу (налагодження ядра Linux, нові пакети
- для підтримки трафіку
Коментар не знайдено