Програмування С, С++теорія та практика (частина 2)
4.1 Вбудований відлагоджувач програм
Система Богїапії С+ + 3.1 має в інтегрованому середовищі програмування вбудований відлагоджувач текстів програм. Для того, щоб можна було використовувати вбудований відлагоджувач, потрібно, щоб були включені відповідні опції. А для того, щоб можна було б скористатися зовнішнім відлагоджувачем, наприклад, таким, як ТигЬо ОеЬиддег, необхідно включити відлагоджувальну інформацію у файл виконання. Опція, що керує включенням відлагоджувальної інформації, знаходиться в меню Орііоп® | БеЬиддег | 8оигсе БеЬиддіпд. По замовчуванню ця опція увімкнена.
Відлагоджувач текстів програм не потребує дизасемблювання, а автоматично включає оригінальний текст програми у виконуваний файл. Він зв’язує скомпільований об’єктний код з кожним рядком тексту програми.
Відлагоджувач надає користувачу багато можливостей. Можна керувати виконанням програми встановленням точок переривання. Можна виконувати програму покроково, спостерігаючи за зміною значень змінних і виразів.
Покрокове виконання програми - це процес виконання одного оператора (точніше, одного рядка програми) за один крок.
Для покрокового виконання програми з використанням вбудованого відлагоджувача системи Богїапії С++ 3.1 необхідно натиснути клавішу ¥7. Помітимо, що рядок програми, що містить таіп() у вікні редагування, буде виконаний. Це початок виконання програми. Помітимо також і те, що рядки з #іпс1и<іе та прототипами функцій будуть пропущені, так як директиви препроцесора і оголошення прототипів функцій не генерують коду і автоматично пропускаються відлагоджувачем. Це саме стосується і оголошень змінних. Натискання клавіші ¥7 еквівалентне вибору пункту меню Кип | Тгасе іпіо. Якщо натискати ¥7 декілька разів, виділення буде переміщуватися від рядка до рядка. Виділяється той рядок, який буде виконуватися на наступному кроці.
Коли в програмі зустрічається виклик функції, виділений рядок переміщується в тіло цієї функції. Можна також виконувати програму без входження у функції. Це здійснюється натисканням клавіші Г8 (Кип | 8іер оуєг). Натискання Е7 і Е8 можна комбінувати в будь-якому порядку.
Встановлення точок переривання. При всіх перевагах покрокового виконання програми це може бути достатньо довгим процесом у великій програмі або при наявності циклів, особливо якщо місце програми, яке потрібно відлагодити, знаходиться надто далеко від початку програми. У відлагоджувачі передбачена можливість руху по програмі великими кроками. Перша можливість - виконання програми до рядка, в якому знаходиться курсор. Цю можливість можна реалізувати, встановивши курсор в потрібний рядок і натиснувши Р4 або вибравши пункт меню Кип | Со іо оиг8ог.
Друга можливість - встановити точку переривання (ЬгвакроШ). Щоб встановити точку переривання, необхідно перемістити курсор у вікні редагування у той рядок, в якому необхідно призупинити виконання програми. Потім необхідно вибрати пункт меню БеЬид | Тоддіе Ьгеакроіпі Це також можна зробити за допомогою комбінації клавіш СігІ-¥8. Рядок буде виділений яскравим кольором (червоним). Повторний вибір пункту меню відмінить точку переривання, в якій знаходиться курсор.
В програмі можна встановлювати декілька точок переривання.
Якщо встановлена одна або декілька точок переривання, то можна почати виконання програми (Кип | Кип або Сіуі-¥9). Виконання програми зупиниться на першій точці переривання, яка зустрінеться. Оператори в рядку, в якій знаходиться точка переривання, виконані не будуть. Продовжити виконання програми можна в покроковому режимі або знову натиснувши Сігі-Е9 або Р4. В будь-якому випадку при досягненні чергової точки переривання виконання програми буде призупинене.
При встановлених точках переривання можна вивести на екран список точок переривання, який дозволяє додавати (видаляти) точки переривання, встановлювати умови або лічильник зупинки програми при досягненні точки переривання. При виборі БеЬид | Бгеакроіпі® ... на екрані з’явиться відповідне діалогове вікно, вибравши в якому кнопку Егїії отримаємо ще одне вікно, в якому можна модифікувати умови, і лічильник (соипІ).
Встановлення програми на початок (Ргодгаш Кекеї). Якщо виконання програми в подальшому непотрібне (знайдена помилка або потрібно повернутися на початок програми), потрібно вибрати пункт меню Кип | Ргодгап Кекеї або натиснути відповідну комбінацію клавіш СІГІ-Р2. Сеанс відлагодження буде припинений,
і програма буде готова до виконання з самого початку.
Спостереження за змінними. Дуже важлива властивість відлагодження - можливість переглядати поточне значення однієї або кількох змінних в процесі виконання програми.
Визначити змінні, значення яких необхідно проконтролювати, необхідно вибрати пункт меню БеЬид | ^аісЬек і вибрати А<і<і теаІсЬ. У відкритому вікні діалогу необхідно ввести ім’я змінної або вираз. Відлагоджувач відкриє вікно ^аїсЬ, в якому буде змінна або вираз і значення змінної або виразу. Можна продовжити додавання змінних у вікно ^аїсЬ.
В процесі виконання програми у відлагоджувальному (покроковому) режимі значення у вікні ^аїсЬ будуть автоматично змінюватися. Якщо змінна глобальна, її значення доступне в будь- якому місці програми. Якщо ж змінна локальна, то її значення доступне лише в області видимості змінної. Якщо змінна недоступна, то у вікні ^аїсЬ замість значення виведеться відповідне повідомлення.
При перегляді виразів у вікні ^аїсЬ є два обмеження. По- перше, у виразі заборонений виклик функцій. По-друге, у виразі не можуть використовуватися макроси, визначені з використанням Мейпе.
Відлагоджувач ВогІапії С++ дозволяє здійснювати форматоване виведення значень, які спостерігаються. Для встановлення формату використовується наступна форма :
ехрге55Іоп, Ю>гта{_соСе.
Список кодів формату задано в таблиці 4.1:
У форматі Р можна вказувати число значущих цифр після коми: ауегаде, Р5
Якщо формат не вказано, відлагоджувач сам підбирає відповідний тип вибору формату. Якщо змінна типу сЬаг *, відлагоджувач видасть не покажчик, а відповідний цьому покажчику рядок символів. Відлагоджувач дозволяє спостерігати і об'єкт мови Сі++, при цьому можна використовувати формат К.
|
Таблиця 4.1. Формати відображення змінних
|
Стек виклику функцій (Саіі яіаск). В процесі виконання програми можна викликати на екран стан стеку викликів функцій, використовуючи пункт меню БеЬид | Са11 8Іаск. При цьому видається на екран послідовність вкладених викликів функцій зі значення фактичних параметрів. Локальні змінні і адреси повернення не видаються. Зручність цієї опції можна оцінити при відлагодженні рекурсивних функцій.
Обчислення і зміна значень. При виборі пункту меню БеЬид | Еуаіиаіе/Могїііу на екрані з'являється вікно діалогу, в якому можна задавати вираз, що не містить викликів функцій і макросів. Значення цього виразу висвітиться в другому рядку. Якщо вираз є величиною типу 1уа1ие (наприклад, проста змінна), можна в нижньому рядку введення задати нове значення, натиснути кнопку Мойііу і продовжити виконання програми з новим значенням виразу або змінної.
Вікно їтресі. Хоча інформація про змінні при спостереженні у вікні ^аісЬ буває достатньо, можна отримати більш детальну інформацію, відкривши вікно Іпкресі. При вибору пункту меню БеЬид | Іпкресі відкриється вікно діалогу, в якому можна ввести ім’я змінної, і на екрані з’явиться більш детальна інформація, включаючи тип, адресу розміщення змінної в пам’яті та її значення. Особливо інформативне вікно Іпкресі при аналізі об’єктів типу клас. При перегляді класу можна встановити курсор всередині вікна Іпзресі на член цього класу (змінну або функцію), натиснути Епіег і на екрані з’явиться ще одне вікно Іпкресі для цього члена класу. При покроковому виконанні програми дані у вікні Іпкресі автоматично змінюються. На відміну від вікна ^аісЬ, неможливо відкрити вікно Іпзресі для змінної ззовні області дії цієї змінної.
Можна відкрити декілька вікон Іпкресі, розмістивши їх в різних місцях екрану.
Регістри процесора. В процесі відлагодження можна переглядати вміст регістрів процесора і встановлених прапорців. При виборі ^іпгїоте | Ке§І8іег§ на екрані з’явиться вікно з іменами і вмістом регістрів процесора.
Вікно Оиіриі. При видачі результатів в процесі відлагодження відображення проходить на користувацький екран (Ц§ег 8сгееп), який звичайно закритий інтегрованим середовищем. Щоб не переключатися під час відлагодження для перегляду виведення на екран, можна відкрити вікно Оиіриі, вибравши пункт меню ^ішіоте | Оиіриі. Вікно, що відкрилося можна переміщувати по екрану і змінювати його розміри. Воно відображує ту частину Ц§ег 8сгееп, в якій пройшла остання зміна. При покроковому виконанні програми виведення на екран відображається в цьому вікні. Правда, є обмеження : у вікні відображається текстова інформація. Г рафічний режим у вікні Оиіриі не підтримується.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
