Субота, 23.11.2024
Творча лабораторія
Меню сайту
Реклама
Категорії каталогу
MS Visual C++ 2005 Express Edition [3]
Середовища програмування [8]
Особливості встановлення та використання різних середовищ програмування
MS Visual Basic 6 [1]
Microsoft Visual Basic
C# [8]
Програмування мовою C#
C++ [3]
Паскаль [5]
ЛОГО [1]
Олімпіадне програмування [0]
Python [1]
Головна » Статті » Програмування » Середовища програмування

Використання налагоджувача gdb в середовищі wxDev-C++ (початок)

Нові статті

[19.02.2020] [C#]
Задача про розрізання квадрата (ООП, C#)
[09.02.2020] [Python]
Задача про розрізання квадрата (ООП, Python)
[06.02.2020] [Паскаль]
Задача про розрізання квадрата (ООП, Free Pascal)

Використання налагоджувача gdb в середовищі wxDev-C++  (початок)

Оригінал статті: Using the GNU debugger with wxDev-C++
Автор Tony Reina
Переклав Пилипчук О.П.

Вступ до налагодження програм

Всі розробники програм помиляються, але деякі помилки важче відшукати, ніж інші. Помилки періоду компіляції виявити найлегше, оскільки wxDev-C++ виводить список таких помилок (включно з номерами рядків та порадами щодо виправлення) у вікні Compiler Output (Виведення компілятора). Помилки періоду виконання (або англійською "bugs") більш підступні, бо розробник не має можливості дізнатися, в якому рядку коду криється причина нескінченного циклу, або помилки доступу (" Access Violation"), або помилки сегментації ("Segmentation Fault"), або "синього екрану смерті" ("Blue Screen of Death"). Налагоджувач (англ. debugger - "дебагер") покликаний допомогти розробникам досліджувати пограми під час їх виконання.

Налагоджувач - це програма, що запускає вашу програму "в собі". Він відслідковує функції, змінні та команди вашої програми. При цьому є можливість зупинити виконання програми в будь-який момент (так звані "точки зупинки"), переглянути (і навіть змінити) значення змінних в цей момент, і потім продовжити виконання програми по одному рядку (покроково) або відразу до кінця. Ви можете ставити точки зупинки в будь-якому місці програми: коли виконання програми дійде до цього місця, налагоджувач зупинить її і дасть можливість переглянути значення змінних в даний момент.

Тут описано використання налагоджувача MingW GNU debugger (gdb). Він може бути використаний тільки з компілятором MingW gcc compiler. Зауважимо, що gdb зорієнтований на роботу через інтерфейс командного рядка. Він запускається як окрема програма-оболонка, надаючи користувачу можливість запускати у ній скомпільовану gcc програму. wxDev-C++ лише надсилає повідомлення до оболонки gdb і відтворює отримані повідомлення, якщо вони є. 

    З gdb (як із іншими налагоджувачами), ви можете:

  • визначати місця, в яких виконання програми буде призупинене (точки зупинки);
  • трасувати програму, виконуючи по одному рядку за раз
  • переглядати значення змінних в реальному часі в процесі виконання програми;
  • переглядати вміст пам'яті, коли програма спричиняє помилку
Зауважимо, що у мережі можна відшукати багато описів використання gdb, які є детальнішими, ніж цей (наприклад, http://dirac.org/linux/gdb/). Радимо переглянути їх, якщо ви бажаєте вивчити gdb якомога глибше.
Існують й інші програми з графічними інтерфейсом, що використовують gdb подібним чином. Наприклад, Data Display Debugger (ddd) є популярним графічним інтерфейсом для gdb. Ви можете використовувати їх замість інтерфейсу, вбудованого у wxDev-C++.

Приклад програми для налагодження

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

Щоб створити проект для налагодження, відкрийте меню Файл (File) і виберіть Створити (New), а потім - Проект (Project). З'явиться діалогове вікно для створення нового проекту.



Виберіть у ньому Console Application(Консольна програма). Назвіть проект sampleDebug. Зауважимо, що новий проект буде створений з заготовкою коду на C++ під назвою main.cpp. Замініть код функції main.cpp наведеним у таблиці:


main.cpp
#include <cstdlib>
#include <iostream>

using namespace std;

float fGlobal = 1234.56;

void test2(int* iTest2a, int iTest2b)
{
    char chTest2 = 'r';
    *iTest2a = iTest2b;
    printf("Finished test2\n");
}

void test()
{
    int iTesta, *iTestb; /* Тут поставте точку зупинки */

    test2(&iTesta, 5);
    printf("iTesta = %d\n", iTesta);

    /* Наступні рядки спричинятимуть помилку періоду виконання,
       оскільки змінна iTestb не ініціалізована */
    /*
    test2(iTestb, 3);
    printf("iTestb = %d\n", iTestb);
    */
}

int main(int argc, char *argv[])
{
    float fMain = 3.1415;
    test();
    printf("Press any key to continue...");
    getchar (); /* Призупинимо програму перед виходом */
    return EXIT_SUCCESS;
}

Не забудьте зберегти проект після заміни вмісту main.cpp.

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

     /*
    test2(iTestb, 3);
    printf("iTestb = %d\n", iTestb);
    */

Ці рядки не спричиняють помилки під час компіляції (тобто, компілятор Mingw gcc створить виконуваний файл без повідомлення про помилку компіляції), проте вони викликають помилку при виконанні програми через використання не ініціалізованої змінної iTestb.

Далі ми використаємо проект sampleDebug щоб продемонструвати, як користуватися налогоджувачем...

Налагодження програми

Запустити програму для налагодження нескладно.

Просто відкрийте меню Налаштування (Debug) і виберіть команду Налаштування (Debug) ( гаряча клавіша : F8).

Якщо ваш проект не містить інформації, необхідної для налагодження, wxDev-C++ запропонує перебудувати програму з включенням цієї інформації. Ви можете увімкнути цей режим вручну у вікні Параметри проекту на вкладці Компілятор в секції Компонувальник (Linker).


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

Після цього налагоджувач завантажить вашу програму і запустить її.


Що відбулося? Отже, як видно у вікні Налаштування/ Вивід зображеному вище, wxDev-C++ активував gdb і запустив ваш виконуваний файл "sampleDebug.exe". У програмі не було помилок і точок зупинки, тому вона нормально завершила роботу. Після успішного завершення програми, виведені повідомлення можуть зацікавити тільки фахівця у gdb.

Ви можете також надсилати команди безпосередньо до налагоджувача користуючись текстовим полем "Послати команду GDB" над вікном виведення. Якщо ви не знаєте gdb, можете набрати help, щоб побачити список команд. Пам'ятайте, що wxDev-C++ насправді тільки запускає оболонку, яка передає ці команди до налагоджувача і показує отримані повідомлення. Ви можете використати ці жкоманди, користуючись gdb в режимі командного рядка.

У наступних пунктах ми розглянемо різні корисні (і більш цікаві) аспекти налагодження:

  • точки зупинки;
  • покрокове виконання програми;
  • спостереження за змінними;
  • зворотне трасування;
  • використання вікна процесора

Встановлення точок зупинки

Ви можете використовувати точки зупинки,  щоб зупиняти вашу програму на певній команді (точніше, у певному рядку).

Щоб додати точку зупинки, спочатку оберіть рядок, де вихочете зупинити програму, просто встановивши у ньому текстовий курсор. Тепер клацніть меню Налаштування, потім виберіть Встановити/зняти точку зупинки (гарячі клавіші: Ctrl+F5). Цього ж можна досягти, клацнувши на смужціліворуч від рядка. Ви можете встановити багато точок зупинки. Клацнувши позначку на смужці видаляють точку зупинки.

Зверніть увагу, що при втсановленні точки зупинки рядок підсвічується червоним кольором а на смужці ліворуч з'являється позначка.


Тепер перезапустіть налагоджувач ( гаряча клавіша: F8) . wxDev-C++ запустить вашу програму під налагоджувачем і повідомить про досягнення точки зупинки, змінивши колір на синій.


Далі ви побачите, як слідкувати за змінними та виконувати програму покроково.

Читати далі...

Интернет реклама
Категорія: Середовища програмування | Додав: teachlab (03.08.2011) | Автор: teachlab
Переглядів: 3930 | Рейтинг: 0.0/0
Всього коментарів: 0
Додавати коментарі можуть тільки зареєстровані користувачі.
[ Реєстрація | Вхід ]
Форма входу
Пошук
Друзі сайту

Підтримка


Статистика
Copyright Пилипчук О.П. © 2024
div id=