Субота, 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
Переклав Пилипчук О.П.


Читати першу частину

Покрокове виконання програми

Після досягнення точки зупинки, виконання програми може бути продовжене різними шляхами:
  • Наступний крок (клавіша: F7): налагоджувач виконає наступну команду (точніше рядок коду) і зупиниться.
  • Крок всередину (клавіша: Shift+F7): налагоджувач виконає наступну команду (точніше рядок коду) і зупиниться. Якщо ця команда є викликом функції, то він перейде до функції і далі крок за кроком виконуватиме рядки цієї функції аж до повернення в місце виклику функції.
  • Продовжити виконання (клавіша: Ctrl+F8):  налагоджувач продовжить виконання аж до досягнення наступної точки зупинки.
Якщо ваша програма ще призупинена в точці зупинки, спробуйте натиснути F7, щоб був виконаний наступний крок. Ви помітите, що курсор у програмному коді змістився вниз до наступного рядка коду і цей рядок виділено синім. Точка ж зупинки знову стала червоною.



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

Спостереження за змінними

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

wxDev-C++ може зручно демонструвати вам вміст класів, рядків, структур/об'єднань, масивів та інших змінних у вікні Налаштування (Debug) на вкладці Локальні змінні (Local Variables):

Зверніть увагу, що на малюнку вгорі змінна iTesta вже має значення "5", а значення iTestb не було присвоєне (воно є випадковим і залежить від даних, що були в пам'яті). 

Тепер залиште вікно Local Variables відкритим і перезапустіть налагодження. Ви зможете покроково виконувати програму після точки зупинки (обговорювалось вище) і побачити, як змінна iTesta змінить значення з випадкового на "5".

Додання  точок спостереження

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

Щоб встановити точку спостереження, додайте в код звичайну точку зупинки і запустіть налагодження. У вікні Налаштування (Debug) клацніть вкладку Watches. Потім клацніть правою кнопкою на вільному місці вкладки Watches. З'явиться меню з командою Додати в спостережувані (Add Watch)  (клавіша: F4).

Коли ви виберете  Додати в спостережувані (Add Watch), з'явиться діалогове вікно:

Наберіть у ньому ім'я змінної і натисніть Гаразд (OK). Якщо виділити слово в поточному файлі і натиснути F4, то виділений текст буде доданий до списку спостережень без запиту щодо імені змінної. Зупинка може відбуватись при читанні змінної, при запису в неї або в обох випадках разом.

Встановлена точка спостереження продовжує діяти при наступних запусках налагодження. Крім того, ви можете змінити значення спостережуваної змінної під час налагодження, клацнувши правою кнопкою її ім'я у вікні Налаштування (Debug) на вкладці Спостереження (Watch) і вибравши Змінити спостережувану змінну (Modify watched variable). Зверніть увагу, що ви змінюєте значення за межами програмного коду. При наступному запуску налагоджувача введене значення буде втрачене і програма працюватиме у звичайному режимі.

Важливі зауваження:

  • При використанні вказівників на структури або класи, якщо ви хочете побачити всі члени змінної my_pointer, то потрібно відслідковувати *my_pointer (‘*’ - оператор-значення). Слідкуючи просто за my_pointer, ви побачите лише адресу, що зберігається у my_pointer.
  • Іноді налагоджувач не може визначити тип вказівника, і тому не може показати всі члени структури або класу. Ви можете уникнути цієї проблеми, вказавши тип спостережуваної змінної. Наприклад, якщо налагоджувач не може продемонструвати вміст змінної my_pointer типу MyPointer, спробуйте додати спостереження за: *(MyPointer *)my_pointer.

Зворотне трасування

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

Проведемо експеримент. Встановіть точку зупинки у своєму проекті sampleDebug в рядку printf, що у функції test2 (12-й рядок). Після цього перезапустіть налагодження (клавіша F8). Якщо у вікні Налаштування (Debug) ви виберете вкладку Відслідковувати (Backtrace), ви побачите приблизно таке:



Тут показано список функцій, які викликались (починаючи від запуску програми), перед досягненням точки зупинки. Клацнувши (у версії 7.3.1.3 - двічі - О.П.) назву функції у списку, ви побачите її реалізацію в коді програми. Так, наприклад, якщо ви клацнете (двічі - О.П.) test, IDE покаже вам рядок 19 вихідного коду. Зауважте, що змінні-аргументи, що були передані у функцію, показані разом з їхніми поточними значеннями.

Тепер розкоментуйте рядки 24-27 у функції test. При спробі запустити налагодження, програма викличе помилку доступу (access violation) і зупиниться. IDE продемонструє, в якому рядку виявлена помилка, а на вкладці Відслідковувати (Backtrace) буде показано поточні змінні та їхні значення.

Використання вікна процесора

wxDev-C++ надає вікно поцесора, яке дозволяє кваліфікованим розробникам слідкувати за станом регістрів процесора та командами.

Щоб побачити вікно процесора, дочекайтесь, доки буде досягнута точка зупинки або робота програми буде перервана, і перейдіть до меню Налаштування (Debug), де клацніть Показати вікно CPU. З'явиться таке діалогове вікно:

Ліворуч ви побачите асемблерний код поточної функції. Ви можете побачити асемблерний код будь-якої з функцій, набравши її назву у полі Функція (Function) і натиснувши Enter. Можна також обрати синтаксис команд асемблера: AT&T або Intel.

Праворуч показано вміст регістрів процесора.


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

Підтримка


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