Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб.doc
Скачиваний:
7
Добавлен:
16.11.2019
Размер:
920.06 Кб
Скачать

Частина 4. Додатки

4.1 Вбудований відлагоджувач програм

Система Borland C++ 3.1 має в інтегрованому середовищі програмування вбудований відлагоджувач текстів програм. Для того, щоб можна було використовувати вбудований відлагоджувач, потрібно, щоб були включені відповідні опції. А для того, щоб можна було б скористатися зовнішнім відлагоджувачем, наприклад, таким, як Turbo Debugger, необхідно включити відлагоджувальну інформацію у файл виконання. Опція, що керує включенням відлагоджувальної інформації, знаходиться в меню Options | Debugger | Source Debugging. По замовчуванню ця опція увімкнена.

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

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

Покрокове виконання програми – це процес виконання одного оператора (точніше, одного рядка програми) за один крок.

Для покрокового виконання програми з використанням вбудованого відлагоджувача системи Borland C++ 3.1 необхідно натиснути клавішу F7. Помітимо, що рядок програми, що містить main() у вікні редагування, буде виконаний. Це початок виконання програми. Помітимо також і те, що рядки з #include та прототипами функцій будуть пропущені, так як директиви препроцесора і оголошення прототипів функцій не генерують коду і автоматично пропускаються відлагоджувачем. Це саме стосується і оголошень змінних. Натискання клавіші F7 еквівалентне вибору пункту меню Run | Trace into. Якщо натискати F7 декілька разів, виділення буде переміщуватися від рядка до рядка. Виділяється той рядок, який буде виконуватися на наступному кроці.

Вбудований відлагоджувач програм 293

Коли в програмі зустрічається виклик функції, виділений рядок переміщується в тіло цієї функції. Можна також виконувати програму без входження у функції. Це здійснюється натисканням клавіші F8 (Run | Step over). Натискання F7 і F8 можна комбінувати в будь-якому порядку.

Встановлення точок переривання. При всіх перевагах покрокового виконання програми це може бути достатньо довгим процесом у великій програмі або при наявності циклів, особливо якщо місце програми, яке потрібно відлагодити, знаходиться надто далеко від початку програми. У відлагоджувачі передбачена можливість руху по програмі великими кроками. Перша можливість – виконання програми до рядка, в якому знаходиться курсор. Цю можливість можна реалізувати, встановивши курсор в потрібний рядок і натиснувши F4 або вибравши пункт меню Run | Go to cursor.

Друга можливість – встановити точку переривання (breakpoint). Щоб встановити точку переривання, необхідно перемістити курсор у вікні редагування у той рядок, в якому необхідно призупинити виконання програми. Потім необхідно вибрати пункт меню Debug | Toggle breakpoint. Це також можна зробити за допомогою комбінації клавіш Ctrl-F8. Рядок буде виділений яскравим кольором (червоним). Повторний вибір пункту меню відмінить точку переривання, в якій знаходиться курсор.

В програмі можна встановлювати декілька точок переривання.

Якщо встановлена одна або декілька точок переривання, то можна почати виконання програми (Run | Run або Ctrl-F9). Виконання програми зупиниться на першій точці переривання, яка зустрінеться. Оператори в рядку, в якій знаходиться точка переривання, виконані не будуть. Продовжити виконання програми можна в покроковому режимі або знову натиснувши Ctrl-F9 або F4. В будь-якому випадку при досягненні чергової точки переривання виконання програми буде призупинене.

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

2 94 Розділ 4. Додатки

програми при досягненні точки переривання. При виборі Debug | Breakpoints ... на екрані з’явиться відповідне діалогове вікно, вибравши в якому кнопку Edit отримаємо ще одне вікно, в якому можна модифікувати умови, і лічильник (count).

Встановлення програми на початок (Program Reset). Якщо виконання програми в подальшому непотрібне (знайдена помилка або потрібно повернутися на початок програми), потрібно вибрати пункт меню Run | Progran Reset або натиснути відповідну комбінацію клавіш Ctrl-F2. Сеанс влагодження буде припинений, і програма буде готова до виконання з самого початку.

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

Визначити змінні, значення яких необхідно проконтролювати, необхідно вибрати пункт меню Debug | Watches і вибрати Add watch. У відкритому вікні діалогу необхідно ввести ім’я змінної або вираз. Відлагоджувач відкриє вікно Watch, в якому буде змінна або вираз і значення змінної або виразу. Можна продовжити додавання змінних у вікно Watch.

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

При перегляді виразів у вікні Watch є два обмеження. По-перше, у виразі заборонений виклик функцій. По-друге, у виразі не можуть використовуватися макроси, визначені з використанням #define.

Відлагоджувач Borland C+ + дозволяє здійснювати форматоване виведення значень, які спостерігаються. Для встановлення формату використовується наступна форма :

expression, format_code.

Список кодів формату задано в таблиці 4.1:

Вбудований відлагоджувач програм 295

У форматі F можна вказувати число значущих цифр після коми:

average, F5

Якщо формат не вказано, відлагоджувач сам підбирає відповідний тип вибору формату. Якщо змінна типу char *, відлагоджувач видасть не покажчик, а відповідний цьому покажчику рядок символів. Відлагоджувач дозволяє спостерігати і об’єкт мови Cі++, при цьому можна використовувати формат R.

Таблиця 4.1. Формати відображення змінних

Код формату

Значення

C

У вигляді символу

D

Десяткове число

F(n)

Число з плаваючою комою

H або X

Шістнадцяткове число

M

Показати пам’ять (dump)

P

Покажчик

R

Структури : вивести імена і значення членів

S

Вивести керуючі символи

Стек виклику функцій (Call stack). В процесі виконання програми можна викликати на екран стан стеку викликів функцій, використовуючи пункт меню Debug | Call stack. При цьому видається на екран послідовність вкладених викликів функцій зі значення фактичних параметрів. Локальні змінні і адреси повернення не видаються. Зручність цієї опції можна оцінити при відлагодженні рекурсивних функцій.

Обчислення і зміна значень. При виборі пункту меню Debug | Evaluate/Modify на екрані з’являється вікно діалогу, в якому можна задавати вираз, що не містить викликів функцій і макросів. Значення цього виразу висвітиться в другому рядку. Якщо вираз є величиною типу lvalue (наприклад, проста змінна), можна в нижньому рядку введення задати нове значення, натиснути кнопку Modify і продовжити виконання програми з новим значенням виразу або змінної.

2 96 Розділ 4. Додатки

Вікно Inspect. Хоча інформація про змінні при спостереженні у вікні Watch буває достатньо, можна отримати більш детальну інформацію, відкривши вікно Inspect. При вибору пункту меню Debug | Inspect відкриється вікно діалогу, в якому можна ввести ім’я змінної, і на екрані з’явиться більш детальна інформація, включаючи тип, адресу розміщення змінної в пам’яті та її значення. Особливо інформативне вікно Inspect при аналізі об’єктів типу клас. При перегляді класу можна встановити курсор всередині вікна Inspect на член цього класу (змінну або функцію), натиснути Enter і на екрані з’явиться ще одне вікно Inspect для цього члена класу. При покроковому виконанні програми дані у вікні Inspect автоматично змінюються. На відміну від вікна Watch, неможливо відкрити вікно Inspect для змінної ззовні області дії цієї змінної.

Можна відкрити декілька вікон Inspect, розмістивши їх в різних місцях екрану.

Регістри процесора. В процесі відлагодження можна переглядати вміст регістрів процесора і встановлених прапорців. При виборі Window | Registers на екрані з’явиться вікно з іменами і вмістом регістрів процесора.

Вікно Output. При видачі результатів в процесі відлагодження відображення проходить на користувацький екран (User Screen), який звичайно закритий інтегрованим середовищем. Щоб не переключатися під час відлагодження для перегляду виведення на екран, можна відкрити вікно Output, вибравши пункт меню Window | Output. Вікно, що відкрилося можна переміщувати по екрану і змінювати його розміри. Воно відображує ту частину User Screen, в якій пройшла остання зміна. При покроковому виконанні програми виведення на екран відображається в цьому вікні. Правда, є обмеження : у вікні відображається текстова інформація. Графічний режим у вікні Output не підтримується.

Таблиця символів ASCII

297

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]