Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 5 Справка в VFP Обработка ошибок Отла...doc
Скачиваний:
1
Добавлен:
20.08.2019
Размер:
2.18 Mб
Скачать

2.9.Налагоджувальник

До складу Visual FoxPro входить налагоджувальник — могутній засіб аналізу процесу виконання програм. Фактично налагоджувальник — це набір різноманітних засобів, що дозволяють керувати режимом виконання програми, переглядати стан різноманітних груп програмних компонентів — перемінних у пам'яті, стека викликів підпрограм, таблиць баз даних і т. п. Найбільше знайомо користувачам колишніх версій FoxPro діалогове вікно Trace. У версії починаючи з 6.0 до нього додані вікна Watch, Locals, Call Stack і Debug Output. Вікно Watch багато в чому нагадує вікно Debug у колишніх версіях FoxPro, але з деякими досить істотними поліпшеннями. Якщо налагоджувальник скомпонований таким чином, що буде працювати у власному середовищі — Debug Frame, то компонування екрана при його запуску буде виглядати приблизно так, як показано на Малюнок 16.

Малюнок 16. Налагоджувальник Visual FoxPro.

Природно, ніхто вас не змушує компонувати налагоджувальник саме таким способом. Компонування налагоджувальника в Visual FoxPro набудовується у вкладці Debug діалогового вікна Options, що відкривається командою ToolsÞOptions. У списку, що розкривається, Environment виберіть FoxPro Frame — і тоді усі вікна будуть розміщатися на робочому столі Visual FoxPro. У цьому випадку можна вільно відкривати будь-яке чи навіть усі вікна і розміщати їх за своїм розсудом.

Конфігурування налагоджувальника на роботу у власному оточенні знижує імовірність конфлікту між вікнами налагоджувальника й додатка що налагоджується. Саме такого роду конфлікти дуже утрудняли роботу з налагоджувальником, зокрема з його вікнами Trace і Debug у колишніх версіях FoxPro.

2.9.1.Використання вікна Trace

Вікно Trace використовується для налагодження програмного коду. У цьому вікні можна бачити фрагмент програмного коду що зараз виконується, причому при виконанні програми в покроковому режимі вказівник переміщається після виконання кожного чергового оператора. У такий спосіб можна відстежити (по-англійському to trace) послідовність виконання операторів програми. На Малюнок 16 представлене типове вікно Trace.

Для перекладу додатка в режим трасування і виводу на екран вікна Trace існує кілька способів. Один з них — включити в програмний код команду SET STEP ON, перекомпілювати програму і знову запустити її на виконання. При виконанні цього оператора процес виконання програми зупиняється і на екран виводиться вікно Trace.

Інший варіант відкрити вікно Trace — вибрати перед початком виконання програми в меню команду ToolsÞDebugger чи ввести Debug у вікно команд. У цьому випадку запускається налагоджувальник, і його засобами можна відкрити кожне з вікон, у тому числі і Trace. Для цього потрібно вибрати команду WindowÞTrace чи клацнути на піктограмі Trace на панелі інструментів. Зверніть увагу — коли відкриється вікно Trace, на панелі інструментів розблокуються інші кнопки керування налагодженням. На Малюнок 17 показана панель інструментів налагодження, а у Таблиця 3 призначення її кнопок.

Малюнок 17. Панель інструментів налагодження

Таблиця 3. Призначення кнопок панелі налагодження.

Відкриття файлу для трасування

Запускає або відновлює виконання поточної програми

Відміняє виконання поточної програми

Перехід на наступний оператор усередині підпрограми

Перехід на наступний оператор після підпрограми

Вихід з поточної підпрограми

Запускає виконання поточної програми до того оператора, на якому стоїть курсор

Відображення на екрані вікна Trace

Відображення на екрані вікна Watch

Відображення на екрані вікна Locals

Відображення на екрані вікна Call Stack

Відображення на екрані вікна Debug Output

Вмикає/вимикає точку зупинки на поточному операторі

Знімає усі точки зупинки

Відображення на екрані діалогове вікно точок зупинки

Вмикає/вимикає запис у файл протоколу покриття коду

Вмикає/вимикає запис у файл протоколу подій

Вибір додатка чи програми для налагодження здійснюється командою FileOpen. Після цього на екрані з'являється діалогове вікно Open, у якому за замовчуванням відображаються файли з розширеннями .PRG, .FXP і .MPR у поточному каталозі. Також у список включаються файли з розширеннями .ЕХЕ і .АРР. Якщо буде обраний файл із розширенням .АРР, то з'явиться ще одне діалогове вікно, у якому потрібно вибрати програму в рамках додатка. Якщо в додатку є тільки файли .FXP, то їхні імена у вікні будуть неактивні (відображаються сірим кольором), оскільки їх не можна використовувати для налагодження у вікні Trace. Потрібно мати доступ до файлів вихідного програмного коду.

Якщо обраний файл програмного коду (з розширенням .PRG), то Visual FoxPro виведе цей код у вікно Trace. Зверніть увагу — у вікні Trace також підтримується функція синтаксичного розфарбування, як і в редакторі коду.

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

Для того щоб установити точку зупинки на деякий оператор, зробіть подвійного щиглика кнопкою миші на затіненій смузі ліворуч від тексту проти обраного рядка коду. Інший варіант — установите курсор у будь-якім місці обраного оператора і натисніть клавішу пробілу. Можна також скористатися і піктограмою Toggle breakpoint на панелі інструментів. Якщо обраний оператор такий що виконується, Visual FoxPro відзначить його червоним кружком на лівій затіненій смузі. Цей кружок нагадає вам при нагоді, що тут установлена точка зупинки. Якщо ж обраний рядок є коментарем, Visual FoxPro установить точку зупинки на перший же після зазначеного коментарю оператор що виконується. Є ще один варіант — спроба установити точку зупинки на рядку поточного оператора. У цьому випадку маркер (кружок) з'явиться на останньому рядку оператора.

Можна встановлювати точки зупинки і у редакторі – для цього встановіть курсор на рядок у якому вам потрібна точка зупинки і у контекстному меню (права кнопка миші) виберіть пункт Toggle breakpoint.

Можна установити стільки точок зупинки, скільки вважаєте за потрібне, — Visual FoxPro не обмежує вас у цьому. Щораз, коли в процесі виконання програми керування передається оператору, відзначеному маркером зупинки, виконавча система Visual FoxPro виконує команду SUSPEND із усіма наслідками. Якщо ви вирішили зняти точку зупинки з деякого оператора, виконаєте на ньому подвійний щиглик кнопкою миші чи виділите рядок і натисніть <Enter> — маркер зникне.

Після того як виконання програми призупиниться на черговій точці зупинки, можна зробити наступне.

  • Переглянути код вище чи нижче по тексту програми.

  • Вибрати інший програмний об'єкт для перегляду, скориставшись списком у вікнах Trace чи Locals. Можна також вказати і потрібну підпрограму у вікні Call Stack.

  • Відкрити вікно Data Session і подивитися стан відкритих файлів бази даних, індекси, що поточний статус записів і навіть помандрувати по записах таблиць.

  • Увести команду у вікно команд.

  • Вибрати опцію з головного меню Visual FoxPro.

  • Переглянути чи змінити значення будь-якої перемінної в пам'яті чи в таблиці.

  • Переглянути елементи масивів і змінити їх при необхідності.

  • Переглянути послідовність виклику підпрограм, що привела до поточної ситуації.

  • Змінити режим виконання програми.

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

По завершенні налагодження додатка необхідно всі точки зупинки видалити. Їх можна видаляти або поодинці вручну у вікні Trace, або всі разом, клацнувши на піктограмі Clear All Breakpoints панелі інструментів налагодження. Після будь-якого редагування програмного коду Visual FoxPro знову його компілює перед запуском. На відміну від безлічі інших інструментальних середовищ, Visual FoxPro при повторній компіляції видаляє усе раніше встановлені точки зупинки. Тому при налагодженні нової версії буде потрібно відновити ті з них, що ви вважаєте необхідними.

У меню Debug є опція Throttle, що регулює тривалість паузи після виконання кожного чергового оператора. Значення за замовчуванням — 0, тобто відсутність паузи. Це не означає, що при такому настроюванні програма в режимі налагодження буде виконуватися з тією же швидкістю, що й у звичайному режимі. У режимі налагодження в будь-якому випадку швидкість значно знижується, але якщо цього для вас недостатньо, можна штучно збільшити затримку за допомогою цієї опції. Діапазон можливих значень: 0-5 секунд. Під час виконання програми в режимі налагодження можна це настроювання змінити — знизити швидкість удвічі, натиснувши або клавішу <Ctrl>, або <Shift>, або кнопку миші. Для ще одного зменшення вдвічі натисніть разом будь-які з двох перерахованих клавіш.

Після щиглика на піктограмі Resume панелі інструментів, вибору команди DebugResume чи натискання клавіші <F5> програма починає виконуватися. Visual FoxPro висвітлює рядок коду у вікні Trace, що відповідає поточному оператору що виконується. Природно, якщо не настроїти відповідно затримку переходу до наступного оператору, устежити за переміщенням висвітлення у вікні Trace буде важко.

Поки вікно Trace відкрите, можна перервати виконання програми, натиснувши клавішу <Esc>, якщо тільки в програмі не було оператора SET ESCAPE OFF. Виконати настроювання такого режиму реагування на клавішу <Esc> можна у вкладці General діалогового вікна Options, що відкривається командою ToolsOptions. Потрібно встановити прапорець Cancel Program on Escape. Ця опція дозволяє припинити виконання програми, не чекаючи її природного завершення.

Під час налагоджувального прогону програми можна вибрати один з чотирьох режимів.

  • Перехід на наступний оператор усередині підпрограми — піктограма Step Into на панелі інструментів чи клавіша <F8>.

  • Перехід на наступний оператор після підпрограми — піктограма Step Over на панелі інструментів чи клавіша <F6>.

  • Вихід з поточної підпрограми — піктограма Step Out на панелі інструментів чи клавіші <Shift+F7>.

  • Запуск виконання поточної програми до того оператора, на якому знаходиться курсор, — піктограма Run to Cursor на панелі інструментів чи клавіша <F7>.

Найчастіше використовується піктограма Step Into. У результаті виконавча система Visual FoxPro виконує наступний оператор і знову зупиняє процес.

Цей режим використовується при покроковому налагодженні. Після виконання кожного оператора можна переглянути всі характеристики поточного стану — перемінні в пам'яті, таблиці і т. д. Для того щоб продовжити виконання, активізуйте знову вікно Trace і клацніть на тієї ж піктограмі. Якщо виявиться, що наступний оператор — виклик підпрограми (процедури чи функції), то виконавча система призупинить виконання на першому ж операторі усередині цієї підпрограми.

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

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

Інший зручний спосіб відразу “перескочити” через великий фрагмент коду — установити курсор у вікні Trace на тім операторі, на якому ви збираєтеся зупинитися, і клацнути на піктограмі Run to Cursor. Але врахуйте, якщо курсор буде встановлений на операторі в тій галузі програми, що при поточних умовах не виконується, то процес зупиниться тільки або по виходу на точку зупинки, або по завершенні всієї програми, або у випадку аварійної ситуації (останнє в режимі налагодження відбувається найчастіше).

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

Нова функція в налагоджувальнику Visual FoxPro 6 — примусова установка чергового виконуваного оператора. Звичайно виконавча система виконує в програмі один оператор за іншим. Але якщо ви відшукали помилку в деякому операторі, але відклали на потім її виправлення і не бажаєте переривати процес налагодження (а після виправлення програмного коду потрібно буде перекомпілювати програму і почати процес трасування із самого початку), можна використати такий спосіб. Введіть у вікно команд виправлений оператор і змусьте систему виконати його. Після цього установите покажчик у вікні Trace на потрібному операторі, з якого можна продовжити процес виконання і виберіть у меню Debug команду Set Next Statement. He забудьте тільки після завершення налагодження внести виправлення у файл вихідного коду.

Інший новий засіб у Visual FoxPro 6 — діалогове вікно Breakpoints. Клацніть на третій праворуч піктограмі панелі інструментів налагоджувальника чи виберіть команду ToolsBreakpoints — на екрані з'явиться діалогове вікно, показане на Малюнок 18.

У цьому діалоговому вікні є засоби настроювання точок зупинки. Зверніть увагу на вікно списку Breakpoints у нижній частині діалогового вікна. У ньому перераховані усі встановлені в поточному модулі програми точки зупинки. У вихідному стані жодна з них не обрана. Клацніть на який-небудь їз них і переглянете зв'язану з нею інформацію.

Поле Location починається з імені підпрограми (процедури чи функції), в якої встановлена точка зупинки. Далі йде номер рядка, що відлічується від початку підпрограми. У поле File виведене ім'я файлу, у якому знаходиться програма, процедура чи функція. Ім'я файлу включає повний шлях до нього, у тому числі й ім'я диска.

Якщо в точок зупинки додається нова, то їй за замовчуванням привласнюється тип Break at Location (Зупинка по положенню коду). Це означає, що виконання програми буде зупинено, як тільки керування передасться на оператор у цьому рядку. Але в розпорядженні програміста є й інші опції.

Навіть у рамках типу можна задати значення в поле Pass Count (Лічильник проходів) і тим самим замовити, на якому ж циклі передачі керування цьому оператору потрібно виконати зупинку. Припустимо, налагоджується деякий цикл. Ви вже знаєте, що перші 100 проходів циклу не викликають ніяких підозр, а помилка виникає в одному з наступних. Зовсім очевидно, що перспектива 100 разів зупинятися і натискати клавішу продовження (<F5>) чи клацати мишею на піктограмі аж ніяк не з приємних. Це можна зробити, установивши значення 100 у поле Pass Count. Тепер нехай виконавча система Visual FoxPro сама рахує, скільки разів уже виконався оператор, а на 100-м зупинить процес.

Змінити тип точки зупинки можна, вибравши придатний зі списку, що розкривається, Турe. Тут є чотири варіанти.

  • Break at Location (Зупинка по положенню коду).

  • Break at Location іf Expressіon Іs True (Зупинка по положенню коду, якщо вираження істинне).

  • Break When Expressіon Іs True (Зупинка, коли вираження істинне).

  • Break When Expression Has Changed (Зупинка, коли вираження змінило значення).