Виконання по кроках

Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.

Якщо тепер запустити програму, то станеться зупинка, і керування буде передано в середу Delphi, де рядок з точкою зупинки позначається зеленою стрілкою. У заголовку головного вікна Delphi з'явиться інформаційне повідомлення Projectl [Stopped] (Виконання проекту Projectl призупинено). При цьому не забудьте встановити прапорець інтегрованого налагодження у розділі Debugger Options вікна Options, інакше зупинки не відбудеться!

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

можна

Мал. 9.5, Підготовка програми до покрокової налагодження

виконання

Мал. 9.6. Перегляд значень у момент налагодження

Повністю зупинити роботу програми можна за допомогою команди Run * Program Reset (Запуск Скидання програми) або комбінації клавіш . Тепер можна змінити умову закінчення циклу та знову запустити програму.

Однак виконувати цикли кроків не дуже зручно. Якщо кількість повторень досягає сотень чи тисяч, то постійно натискати клавішу безглуздо. Щоб пропустити виконання групи операторів, можна використовувати команду Rurr=>Run to Cursor (Запуск виконання курсора) або клавішу . При цьому текстовий курсор треба встановити в рядок, починаючи з якого потрібно продовжити виконання кроків. Потім слід прибрати точку зупинки (оскільки при спробі виконати групуоператорів, в даному випадку цикл, середа Delphi зустріне цю точку зупинки і знову зупиниться на старому місці) і натиснути . Продовжити виконання програми (не кроками) можна за допомогою команди Run або клавіші .

Переглянути всі встановлені точки зупинки можна за допомогою команди View*Debug Windows1*Breakpoints (Перегляд Вікна налагодження1* Точки зупинки).

У деяких випадках при виконанні програми по кроках потрібно також відстежити і те, як працюють різні підпрограми, вкладені в модуль, що налагоджується. Розглянемо це з прикладу - розмістимо на формі кнопку і сформуємо обробник її клацання. У обробник помістимо звернення до методу AddActionExecute.

Поставимо на виклик цього методу точку зупинки. Запустимо програму, натисніть на новій кнопці - виконання перерветься в потрібному місці. Якщо тепер натиснути клавішу , підпрограма AddActionExecute виконається за один крок (відбудеться крок через підпрограму). Але це не те, що потрібне. Часто необхідно оцінити і логіку роботи самого методу AddActionExecute. Для цього можна застосувати команду Run-*Trace into (Запустити* Увійти всередину), натиснути клавішу або клацнути на кнопці Trace into (Увійти всередину). В результаті керування передається першій команді методу AddActionExecute.

Можна "входити всередину" не тільки тих методів, які написані розробником, але й стандартних процедур Delphi. Для цього має бути встановлений прапорець у полі Use Debug DCU на вкладці Compiler вікна Project Option.

Іноді відразу стає зрозумілим, що робить підпрограма, до якої розробник увійшов. У таких випадках можна швидко залишити її за допомогою команди Run , внаслідок чого управління передається на оператор, що йде за викликом даної підпрограми.

Досить часто в програмах зустрічаютьсяситуації, коли кількість викликів вкладених підпрограм дуже велика - вона може сягати десятків. Щоб переглянути таку послідовність підпрограм з конкретними параметрами під час виконання програми, потрібно використовувати команду View*Debug Windows* Call Stack (Перегляд*Вікна налагодження*Стек викликів).