Gdb інструкція

Отладчик це програма, яка запускає інші програми, що дозволяє користувачеві здійснювати контроль над цими програмами, а також для вивчення змінних, коли виникають проблеми.

GNU Debugger, який також називаютGDB, є найпопулярнішим відладчик для систем UNIX для програм C ++ налагодження C і.

GNU Debugger допомагає вам в отриманні інформації про наступне:

Якщо ядро ​​дампа сталося, то, що вираз або зробив збій програми на?

У разі виникнення помилки при виконанні функції, яка рядок програми містить виклик цієї функції, і які параметри?

Які значення змінних програми в певній точці під час виконання програми?

Що є результатом конкретного вираження в програмі?

Як GDB налагоджує?

GDB дозволяє запускати програму до певної точки, а потім зупинити і роздрукувати значення деяких змінних в цій точці, або крок через програму однієї лінії в той час, і роздруковувати значення кожної змінної після виконання кожного рядка.

GDB використовує простий інтерфейс командного рядка.

окуляри Примітка

Незважаючи на те, GDB може допомогти вам у виявленні пов'язаних витоку пам'яті помилок, але це не є інструментом для виявлення витоків пам'яті.

GDB не може бути використаний для програм, які збирають з помилками, і це не допомагає у встановленні цих помилок.

Перед тим, як перейти до установки, перевірте, якщо у вас вже встановлений GDB на вашій системі Unix, виконавши наступну команду:

Якщо GDB встановлений, то він буде відображати всі доступні варіанти в межах вашої GDB. Якщо GDB не встановлено, а потім приступити до нової установці.

Ви можете встановити GDB на вашій системі, слідуючи простим крокам, описаних нижче.

Крок 1: Переконайтеся. що у вас є необхідні умови для установки GDB:

ANSI-сумісний компілятор мови Сі (рекомендується ПКУ - зверніть увагу, що GDB може налагоджувати коди, що генеруються іншими компіляторами)

115 МБ вільного дискового простору на розділ, на якому ви збираєтеся побудувати GDB.

20 МБ вільного дискового простору на розділ, на якому ви збираєтеся встановити GDB.

Декомпресія програма проекту GNU, GZIP

Службовим програми - версія GNU відомо, працює без проблем, інші. ймовірно. не гірше.

Крок 2: Завантажте Gdb дистрибутив вихідного коду з ftp.gnu.org/gnu/gdb

pobj (Ми іспользоваліGdb-6.6.tar.gz для цих інструкцій.) Помістіть файли дистрибутива в каталогесборкі ..

Крок 3: У вашій директорії для збірки, розпаковувати Gdb-6.6.tar.gz і витягти вихідні файли з архіву. Після того як файли закінчили вилучення, змінити робочий каталог на Gdb-6.6 каталог, який був автоматично створений в директорії збірки.

Крок 4: Запустіть сценарій настройки. щоб налаштувати дерево вихідних текстів для вашої платформи.

Крок 5: Створіть GDB за допомогою утиліти Make.

Крок 6: Увійдіть в систему як корінь і встановіть GDB за допомогою наступної команди.

Крок 7: При необхідності, дисковий простір може бути утилізований шляхом видалення Gdb каталог збірки і файл архіву після завершення установки.

Тепер у вас є GDB, встановлені у вашій системі, і він готовий до використання.

Налагодження Таблиця символів відображає інструкції в скомпільовані бінарні програми їх у відповідній змінній функції або рядки у вихідному коді. Це відображення може бути щось на зразок:

Інструкція Програма ⇒ ім'я елемента, тип елемента, вихідний файл, номер рядка, певний.

Таблиці символів можуть бути вбудовані в програму або зберігається у вигляді окремого файлу. Так що якщо ви збираєтеся налагоджувати програму, то необхідно створити таблицю символів, яка буде мати необхідну інформацію для налагодження програми.

Ми можемо зробити висновок, такі факти про таблиці символів:

Таблиця символів працює для конкретної версії програми - якщо змінюється програма, нова таблиця повинна бути створена.

Налагодження будує часто більше і повільніше, ніж роздрібний (неотладочний) будує; налагоджувальних збірок містить таблицю символів і іншу допоміжну інформацію.

Для того, щоб GDB бути в змозі прочитати всю цю інформацію, рядок за рядком з таблиці символів, ми повинні скомпілювати його трохи по-іншому. Зазвичай ми складаємо наші програми, як:

Замість того, щоб робити це, ми повинні скомпілювати з прапором -g, як показано нижче:

GDB пропонує великий список команд, проте такі команди є ті, які використовуються найчастіше:

б головний - Ставить точку зупину на початку програми

б - Ставить точку зупину у поточному рядку

б N - Ставить точку зупину у рядку N

б + N - Ставить точку зупину N рядків вниз від поточного рядка

б п - Ставить точку зупину на початку функції "Fn"

d N - Видаляє точки зупину з номером N

Інформація перерву - список точок зупину

г - запускає програму до точки зупинки або помилки

з - Продовжує виконання програми до наступної точки зупину або помилки

е - Працює. поки поточна функція не закінчена

s - Запускає наступний рядок програми

s N - запуск наступних N рядків програми

п - Як і з, але це не крок до функцій

U N - Працює. поки ви не отримаєте N рядків перед поточним рядком

р вар - Виводить поточне значення змінної "змінної"

BT - Друк трасування стека

і - Піднімається рівень в стеці

d - Знижується рівень в стеці

д - завершує роботу GDB

Початок роботи: Запуск і зупинка

GCC -g myprogram.c

Складає myprogram.c з опцією налагодження (-g). Ви все ще отримуєте a.out, але він містить інформацію про налагодження, яка дозволяє використовувати змінні і імена функцій всередині GDB, а не сирих осередків пам'яті (не цікаво).

Відкриває GDB з файлом a.out, але не запускати програму. Ви побачите підказку (GDB) - все приклади з цього рядка.

Три способи запуску "a.out", завантажені раніше. Ви можете запустити його безпосередньо (г), передавати аргументи (r arg1 arg2), або годувати в файлі. Зазвичай ви будете встановлювати точки зупинки перед запуском.

ч точок зупину

Списки розділи довідки (допомога) або отримує допомогу по конкретній темі (ч) точки зупину. GDB добре задокументовані.

д - Вихід з GDB

покрокове кодексу

Степпінг дозволяє простежити шлях вашої програми, і нуль в на коді, який розбиваючи або повернення неприпустимий введення.

Списки 10 рядків вихідного коду для поточного рядка (L), певний спосіб (50 л), або для функції (л MyFunction).

Виконує програму до наступного рядка, потім робить паузу. Якщо поточна рядок є функцією, вона виконує всі функції, а потім робить паузу.Следующій добре для прогулянок по коду швидко.

Запускає наступну команду, а не рядки. Якщо поточна команда встановлює змінну, вона є такою ж. як у наступному. Якщо це функція, вона буде стрибати в функцію, виконати перше твердження, а потім зробити паузу.Шаг хороший для занурення в деталі вашого коду.

Завершення виконання поточної функції, потім пауза (також званий крок з). Корисно, якщо ви випадково ступив у функцію.

Точок зупину або спостереження

Breakpoints грають важливу роль в налагодженні. Вони пауза (перерва) програму, коли вона досягає певної точки. Ви можете переглядати і змінювати змінні і продовжити виконання. Це корисно, коли відбувається якийсь збій вхід або входи повинні бути перевірені.

  • Встановлює точку зупину у рядку 45, або на MyFunction. Програма зробить паузу, коли вона досягне точки зупину.
  • Встановлює точку спостереження, яка робить паузу програма, коли умова зміни (при х == 3 змін). Контрольні точки є великими для певних входів (myPtr! = NULL) без перерви прікаждом виконанні функції.

    Відновлює виконання після паузи за допомогою точки зупину / точки спостереження. Програма триватиме до тих пір, поки не досягне наступної точки зупину / точку спостереження.

    • Видалення точки зупину N (контрольні точки пронумеровані при створенні).
  • установка змінних

    Виводить поточне значення змінної х. Будучи в стані використовувати оригінальні імена змінних тому прапор (-g) потрібно; Програми регулярно скомпільовані цю інформацію видалити.

    встановити х = 3

    • Набори х до заданого значення (3) або іншої змінної (у)
  • називати myotherfunction (х)

    телефонуйте STRLEN (MyString)

    Викликає певні користувачем або системних функцій. Це дуже корисно, але остерігайтеся виклику функцій баггі.

    Постійно відображає значення змінної х, яка з'являється після кожного кроку або паузи. Корисно, якщо ви постійно перевіряти протягом певного значення.

    • Видаляє постійне відображення змінної, яка відображається командою дисплея.
  • Backtrace і зміні кадрів

    Стек являє собою список поточних викликів функцій - це показує вам, де ви знаходитесь в программе.Фрейм зберігає деталі виклику однієї функції, такі як аргументи.

    Друкує іліцепочек викликів поточної функції стека. Щоб показати. де ви знаходитесь в поточній програмі. Якщо основні виклики функції а (), який викликає B (), який викликає з (), то це трасування

    Перехід до наступного кадру вгору або вниз в стеці функції. Якщо ви перебуваєте Вс, ви можете перейти до Ь або досліджувати локальні змінні.

    Обробка сигналів

    Сигнали являють собою повідомлення, кинуті після певних подій, наприклад, таймер або помилки. GDB може зробити паузу, коли він виявляє сигнал; ви можете ігнорувати їх замість цього.

    рукоятка [signalname] [дію]

    ручка SIGUSR1 nostop

    ручка SIGUSR1 NOPRINT

    обробляти SIGUSR1 ігнорувати

    Велить GDB ігнорувати певний сигнал (SIGUSR1), коли це відбувається. Існують різні рівні ігнорування.

    Перехід за допомогою наступних прикладів, щоб зрозуміти процедуру налагодження програми і ядро ​​скидали.

    Цей приклад демонструє, як ви зафіксує помилку, яка відбувається через виключення, що виникають при розподілі на нуль.

    Цей приклад демонструє програму, яка може скинути ядро ​​через неініціалізованих пам'яті.

    Обидві програми написані на C ++ і створення дампа ядра з різних причин. Після проходження цих двох прикладів, ви повинні бути в змозі виконати налагодження C або C ++ програм генерації дампа ядра.

    Після проходження цього уроку, ви повинні отримали хороше розуміння налагодження програми C або C ++ з використанням GNU Debugger. Тепер він повинен бути дуже легким для вас, щоб вивчити функціональність інших отладчиков, тому що вони дуже схожі на GDB. Настійно рекомендується пройти через інші отладчики, а також ознайомитися з їх особливостями.

    Є чимало хороших отладчики, доступних на ринку:

    DBX Debugger - Цей відладчик поставляється разом з Sun Solaris. і ви можете отримати повну інформацію про це відладчик. використовуючи сторінку людиною DBX, тобто, людина DBX.

    DDD Отладчик - Це графічна версія DBX і вільно доступні в Linux. Для того, щоб мати повну деталь, використовуйте довідкову статтю ДДД, тобто, людина ДДД.

    Ви можете отримати повну деталь про GNU Debugger за наступним посиланням: Налагодження за допомогою GDB

    Схожі статті