Л а б о р а т о р н а р о б о т а N 2
Засоби вiдлагодження програм в середовищi Турбо-Паскаль
Мета роботи полягає у вивченнi основних можливостей iнтегрова-
ного середовища Турбо Паскаль по вiдлагодженню програм.
1. Режими вiдлагодження програми
Iнтегроване середовище Турбо-Паскаль надає користувачевi зручний
iнструментар для вiдлагодження програми та пошуку помилок на етапi її
реалiзацiї, який базується на можливостi зупинити виконання програми у
встановленому користувачем мiсцi i переглянути значення, якi мають
змiннi на даний момент. Пiсля цього реалiзацiя програми може бути про-
довжена до точки наступної зупинки чи до кiнця, або в текст програми
вносяться коректуючi змiни i процес її виконання повторюють спочатку.
Спосiб реалiзацiї програми вибирають через роздiл меню [Run]. Мож-
ливi такi режими виконання:
Run Ctrl-F9
Program reset Ctrl-F2
Go to cursor F4
Trace into F7
Step over F8
Всi виконуючi режими Run, Go to cursor, Trace into, Step over ма-
ють однакову схему початку роботи - якщо програма не була вiдкомпiльо-
вана або якщо в її текст внесено якiсь змiни, то викликається компiля-
тор i, у випадку успiшної компiляцiї, починається виконання програми.
Пiсля кожної зупинки програми при її вiдлагодженнi можна змiнити режим
виконання на бiльш зручний.
Режим [Run] (Виконання) - здiйснює повну реалiзацiю програми - вiд
точки запуску до кiнця або до заданого мiсця зупинки.
Режим Program reset ( Скидання програми) - вiдмiняє бiжучий сеанс
вiдлагодження програми, звiльняє пам'ять, яку вона займала, закриває
всi задiянi в програмi файли, але не скидає у вiкнi спостереження зна-
чення змiнних.
Режим [Go to cursor] (Виконувати до курсора) - здiйснює виконання
програми вiд мiсця запуску до рядка з операторами, на якому розташова-
ний курсор. Перед запуском режиму необхiдно перейти у вiкно редактора
програми i встановити курсор в тому мiсцi програми, яке потребує вiдла-
годження.
Даний режим дозволяє встановлювати точки зупинки програми. Щоб за-
безпечити зупинку у виконаннi програми кожен раз, коли вона досягає
конкретного оператора, треба перший раз зупинити її в цiї точцi за до-
помогою F4 (Go to cursor), а наступнi зупинки забезпечити встановленням
у цьому мiсцi точки переривання клавiшами Ctrl-F8 (режим Toggle break-
point меню Debug).
Режим [Trace into] (Трасування) - забезпечує пооператорне виконан-
ня програми - зупинка пiсля виконання кожного рядка програми. Якщо
зустрiчається звертання до пiдпрограми, то здiйснюється трасування опе-
раторiв пiдпрограми.
Режим [Step over] (Покрокове виконання) - є аналогом попереднього
режиму, але розглядає виконання пiдпрограм як один крок програми i зу-
пиняється на операторi, наступному за викликом пiдпрограми.
Аналiз бiжучих значень елементiв програми та встановлення точок
зупинки здiйснюється режимами меню [Debug]:
Evaluate/modify Ctrl-F4
Watches
Toggle breakpoint Ctrl-F8
Breakpoints ...
Режим [Evaluate/modify] (Обчислення/модифiкацiя) - дозволяє поба-
чити бiжуче значення змiнної, обчислити значення заданого виразу, а та-
кож помiняти значення змiнної.
При виклику режиму на екранi з'являється вiкно з трьома рядками:
Expression - для вводу виразу, значення якого обчислюється;
Result - висвiтлюється значення виразу;
New value - для вводу нового значення змiнної.
Режим Evaluate/modify може використовуватись при вiдлагодженнi
програми i автономно. В першому випадку - у виразi можна посилатись на
змiннi програми - будуть використанi значення, якi вони мають на даний
момент. В другому випадку - режим використовують як калькулятор, задаю-
чи константнi вирази. Наприклад 0.4563*2.4.
Pежим [Watches] (Спостереження) - викликає появу додаткового вiкна
меню з пiдрежимами:
Add watch Ctrl-F7
Delete watch
Edit watch
Remove all watches
Пiдрежим [Add watch] (Доповнити вiкно спостереження) - дозволяє
через додаткове вiкно запиту [Watch expression] задавати змiнну або ви-
раз для контролю їх значень. При першому виклику пiдрежиму в нижнiй
частинi екрану створюється вiкно спостереження [Watches], в якому
вiдображається значення, яке має змiнна в даний момент виконання прог-
рами. Якщо знiннiй ще не присвоєно нiякого значення, то виводиться -
Unknown identifier - невизначена змiнна. При наступних звертаннях вiкно
доповнюється введеними змiнними та виразами.
Задання змiнної чи виразу для спостереження можна також здiйснити
комбiнацiєю клавiш Ctrl-F7. При цьому у вiкно запиту [Watch expression]
автоматично заноситься iм'я змiнної, яка вiдмiчена курсором у вiкнi
редагування програми. Перехiд мiж вiкнами здiйснюється клавiшами
Alt-[номер вiкна] або F6. Якщо активним є вiкно спостереження, то вiкно
[Watch expression] можна викликати, натиснувши клавiшу Insert.
Пiдрежим [Delete watch] (Витерти з вiкна спостереження) - забирає
вказанi елементи з вiкна [Watches]. Бiльш просто це можна зробити, якщо
перейти у вiкно спостереження, встановити курсор на потрiбний рядок i
натиснути клавiшу Delete.
Пiдрежим [Edit watch] (Редагування виразу перегляду) - дозволяє
змiнити форму виразу у вiкнi спостереження.
Пiдрежим [Remove all watches] (Зняти всi спостереження) - витирає
всi елементи з вiкна [Watches].
Режим [Toggle breakpoint] (Перемикання точки зупинки) - встановлює
на бiжучому рядку точку зупинки програми. У вiкнi редагування такий ря-
док вiдзначається iншим кольором.
Режим [Breakpoints...] - виводить вiкно з iнформацiєю про встанов-
ленi точки переривання, дозволяє вiдмiнити окремi з них або зняти всi.
Щоб продовжити виконання програми пiсля вiдлагоджувальної зупинки,
треба запустити один iз режимiв виконання. При цьому здiйснюється пе-
ревiрка, чи при зупинцi програми в її текст були внесенi якiсь змiни.
Якщо так - то виводиться попередження:
Source hаs been modified. Rebuild? (Програма змiнена. Перезапустити?)
У випадку позитивної вiдповiдi, вiдбувається перекомпiляцiя програми.
Вiдповiдь No продовжить виконання програми з мiсця зупинки без враху-
вання внесених змiн.
2. Порядок роботи
По виданому завданню набираю, вiдлагоджую та виконую програму.
Program 2;
Uses crt;
Var y:real;
I,n :integer;
begin
clrscr;
writeln (‘ ‘);
readln(n);
writeln(‘ ‘);
for i:=-n to n do
begin
y:=i*i;
writeln (‘!x=’,i,’ ‘,’y=’,y’!’);
end;
writeln(‘ ‘);
readln;
end.
При реалiзацiї програми використовую допустимi вiдлагоджувальнi режи-
ми. Наприклад:
1) зупинити виконання перед початком основного циклу;
2) занести у вiкно спостереження значення контрольних змiн-
них - в їх числi можуть бути масиви, стрiнги чи множини;
3) виконати одне або декiлька покрокових проходжень циклу,
фiксуючи значення контрольних змiнних;
4) встановити точку зупинки на останньому операторi циклу;
5) виконати решту проходжень циклу, аналiзуючи значення
в кiнцi кожної iтерацiї;
6) завершити виконання програми.