GDB означає GNU Project Debugger і є потужним інструментом налагодження для C (разом з іншими мовами, такими як C++). Це допоможе вам поратися всередині ваших програм на C під час їх виконання, а також дозволяє побачити, що саме відбувається, коли ваша програма аварійно завершує роботу. GDB працює з виконуваними файлами, які є двійковими файлами, створеними в процесі компіляції.
Для демонстраційних цілей наведений нижче приклад виконується на комп’ютері Linux із наведеними нижче специфікаціями.
uname -a>

uname -a
Давайте навчимося, роблячи: -
Запустіть GDB
Перейдіть до командного рядка Linux і введіть gdb.
gdb>
gdb
параметр у сценарії оболонки
Підказка про відкриття Gdb повідомляє, що він готовий до команд. Щоб вийти з gdb, введіть quit або q.

Кинути
Скомпілюйте код
Нижче наведено програму, яка демонструє невизначену поведінку під час компіляції за допомогою C99.
Примітка: Якщо об’єкт, який має тривалість автоматичного зберігання, не ініціалізовано явно, його значення є невизначеним, де невизначене значення є або невизначеним значенням, або представленням перехоплення.
Тепер скомпілюйте код. (тут test.c). g прапор означає, що ви можете бачити правильні назви змінних і функцій у ваших фреймах стека, отримувати номери рядків і бачити джерело, коли ви переміщуєтеся у виконуваному файлі. -std=прапор C99 передбачає використання стандарту C99 для компіляції коду. -о прапор записує вихід збірки у вихідний файл.
gcc -std=c99 -g -o test test.C>
gcc -std=c99 -g -o test test.C
Запустіть GDB зі згенерованим виконуваним файлом
Введіть наступну команду, щоб запустити GDB зі скомпільованим виконуваним файлом.
gdb ./test>
gdb ./test
Корисні команди GDB:
Ось декілька корисних команд для початку роботи з GDB.
| Команда | опис |
|---|---|
| біг або р | Виконує програму від початку до кінця. |
| розрив або б | Встановлює точку зупину на певному рядку. |
| відключити | Вимикає точку зупину |
| включити | Вмикає вимкнену точку зупину. |
| наступний або п | Виконує наступний рядок коду, не занурюючись у функції. |
| крок | Перехід до наступної інструкції, занурення у функцію. |
| список або л | Відображає код. |
| друк або стор | Відображає значення змінної. |
| кинути або q | Вихід із GDB. |
| ясно | Очищає всі контрольні точки. |
| продовжувати | Продовжує нормальне виконання |
Відобразити код
Тепер введіть l у запит gdb, щоб відобразити код.

Відобразити код
Встановіть точку зупинки
Давайте введемо точку зупину, скажімо, рядок 5.

Встановіть точку зупинки
Якщо ви хочете встановити точку зупину в різних рядках, ви можете ввести b номер_рядка .За умовчанням список або l відображають лише перші 10 рядків.
Переглянути контрольні точки
Щоб побачити точки зупину, введіть info b.

Переглянути контрольні точки
перетворення рядка в дату
Вимкніть точку зупину
Зробивши вищезазначене, скажімо, ви передумали та хочете повернутися. Тип disable b.

Вимкніть точку зупину
Знову ввімкніть вимкнену точку зупину
Як позначено синім кружком, Enb стає n для вимкненого. 9. Повторне ввімкнення нещодавно вимкненої точки зупину. Тип enable b.

Знову ввімкніть вимкнену точку зупину
Запустіть код
Запустіть код, ввівши run або r. Якщо ви не встановили жодної точки зупинки, команда run просто виконає повну програму.

Запустіть код
Вивести значення змінних
Щоб побачити значення змінної, введіть print ім'я_змінної або стор ім'я_змінної .

Вивести значення змінних
Вище показано значення, збережені в x під час виконання.
Змінити значення змінних
Щоб змінити значення змінної в gdb і продовжити виконання зі зміненим значенням, введіть set ім'я_змінної .
Вихід налагодження
На скріншоті нижче показано значення змінних, з яких цілком зрозуміло, чому ми отримали на виході сміттєве значення. При кожному виконанні . /тест ми отримаємо інший результат.
Вправа: спробуйте використати set x = 0 у gdb під час першого запуску та подивіться результат c.
Вихід налагодження
GDB пропонує багато інших способів налагодження та розуміння вашого коду, як-от перевірка стека, пам’яті, потоків, маніпулювання програмою тощо. Сподіваюся, наведений вище приклад допоможе вам розпочати роботу з gdb.
Висновок
У цій статті ми обговорили GDB (GNU Debugger), який є потужним інструментом у Linux, який використовується для налагодження програм C. Ми обговорили деякі з наступних кроків, щоб ми могли скомпілювати ваш код з інформацією про налагодження, запустити GDB, встановити точку зупинки, перевірити змінні та проаналізувати поведінку програми. Ми також обговорили функції GDB, такі як перевірка коду, керування точками зупинки, маніпулювання змінними та контроль виконання програми, які дозволяють нам ефективно налагоджувати та вирішувати проблеми.