Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_Delphi_2.doc
Скачиваний:
9
Добавлен:
18.09.2019
Размер:
1.91 Mб
Скачать

18.Тестирование и отладка

Подготовка к работе

  1. Изучить по литературе и методическим указаниям:

  • Способы получения данных состояния программы.

  • Отладочная печать.

  • Использование окна отладки «Наблюдатели» (Watches).

  • Пошаговое выполнение программы в версиях «Пропуск блока» (Step over) и «Трассировка» (Trace into).

  • Выполнение программы до позиции курсора.

  • Использование окна «СтопТочки» (Breakpoints).

  • Использование окна «Стек вызова» (Call stack).

  • Использование окон «CPU» и «FPU».

  • Использование опции «Вычислить/Изменить» (Evaluate/Modify).

  1. Изучить алгоритм и программу учебной задачи в данной работе.

  2. Получить для численного примера набор данных для отладочного контроля.

Контрольные вопросы

  1. Способы получения данных о состоянии программы.

  2. Отладочная печать и ее использование при тестировании программ.

  3. Структура и использование окна отладки «Наблюдатели» (Watches).

  4. Пошаговое выполнение программы в версии «Пропуск блока» (Step over).

  5. Пошаговое выполнение программы в версии «Трассировка» (Trace into).

  6. Использование опции прогона программы до позиции курсора.

  7. Структура и использование окна «СтопТочки» (Breakpoints)..

  8. Структура и использование окна «Стек вызова» Call stack.

  9. Назначение и использование окон «CPU» и «FPU».

  10. Использование опции «Вычислить/Изменить» (Evaluate/Modify).

Задание к работе

В работе используется учебная программа, которая по паре вводимых чисел c,d в цикле для i=1...10 вычисляет значения пары других параметров a=(c+d)*i, b=(c-d)*i. Функция Ample вычисляет квадратный корень из суммы квадратов целых частей от a,b, и эти значения суммируются в s. По завершении цикла вычисляется среднее арифметическое sm от выходных параметров функции Ample. Функция Ample оформлена в виде подпрограммы. В программе определены метки, задающие точки останова. Варианты задания представлены в табл. 18 .6.

Листинг программы:

program Prg_18_1;

{$APPTYPE CONSOLE}

uses

SysUtils, RusTrans; // Ссылка на модули

label

m1,m2,m3,m4,m5,m6;

var

a,b,c,d,s,f,sm: real;

i: integer;

function Ample(x,y:real):real;

var x1,y1,f: real;

begin

m5: x1:=Int(x);

m6: y1:=Int(y);

Result:=sqrt(x1*x1+y1*y1);

end;

begin

writeln(Rus('Введите c,d'));

readln(c,d);

writeln;

s:=0;

for i:=1 to 10 do

begin

m1: a:=(c+d)*i;

m2: b:=(c-d)*i;

m3: f:=Ample(a,b);

m4: s:=s+f;

writeln('s[',i,']=',s:8:3);

end;

sm:=s/10;

writeln;

writeln('Resultat=',sm:8:3);

readln;

end.

табл. 18.6. Варианты заданий

N

Переменные для окна

«Наблюдатели»

Строки

останова

Выражение для окна

«Вычислить/Изменить»

a, b, f

m1,m2,m3

a + b

c, d, s

m4,m5,m6

a * b

a, c, s

m2,m3,m4

a - b

b, d, f

m1,m5,m6

a / b

a, d, c

m3,m4,m5

a + b

b, a, s

m1,m2,m6

a * b

c, d, f

m4,m5,m6

a – b

d, c, a

m1,m2,m3

a / b

f, d, b

m5,m6,m1

a + b

s, f, c

m4,m2,m3

a * b

a, s, f

m6,m1,m2

a – b

b, a, s

m3,m4,m5

a / b

c, d, f

m1,m3,m5

a * b

s, d, c

m4,m5,m3

a – b

a, c, f

m2,m1,m6

a / b

Пример выполнения

Задание

Протестировать учебную программу с условиями:

  • С помощью отладочной печати контролировать массив s[i].

  • Переменные для окна «Наблюдатели» (Watches) - a,b,s,i.

  • Точки останова - m1,m2,m4.

  • Выражение для окна «Вычислить/Изменить» (Evaluate/Modify) «a+b»

Выполнение

  1. Создаем консольное приложение.

  2. Размещаем в нем код учебной программы.

  3. Проверка значений s[i] с помощью отладочной печати. Отладочная печать - вывод значений переменных в окно приложения осуществляется при прогоне программы. Ниже показано окно приложения при прогоне.

  1. Командой Инструменты=>Опции отладчика вызвать диалоговое окно, в котором установить флаг «Встроенная отладка». После этого доступны средства тестирования и отладки программ.

  1. Командой Вид =>Окна отладки=>Наблюдатели создаем окно «Наблюдатели». В начале оно пустое.

  2. Командой Запуск=>Добавить наблюдателя через окно «Свойства наблюдателя» последовательно заносим в него переменные a, b, s, i.

После занесения переменных окно «Список наблюдателей» приобретает вид

Так как переменные доступны только при выполнении программы, для них указано, что процесс не доступен. При тестировании в окне будут появляться конкретные значения.

  1. Осуществляем проверку программы с помощью пошагового выполнения в версии «Пропуск блока» (Step over). При этом на каждом шаге в редакторе кода указывается строка кода для исполнения. Она выделяется цветом и помечается стрелкой зеленого цвета слева от строки кода.

При исполнении шага меняется содержание окна «Список наблюдений».

  1. Осуществить проверку программы с помощью пошагового выполнения в версии «Трассировка» (Trace into). Все происходит аналогично, но с заходом в подпрограмму.

  2. Командой Вид=>Окна отладки=>СтопТочки создаем окно «СтопТочки» (Breakpoints). В начале окно пустое.

  3. Задаем в нем точки останова. Для этого командой Запуск=>Добавить СтопТочку=>СтопТочка исходника вызываем окно

  1. В нем заносим данные о точке останова. То же самое можно выполнить быстрее, делая щелчки левой кнопкой мыши по точкам, помечающим строки кода в редакторе кода программы.

В редакторе кода точки и строки кода получают цветовое выделение, а в окне «Список СтопТочек» появляются сведения об этих точках.

  1. Осуществить проверку программы с использованием точек останова. Для этого использовать команду Запуск. При каждом выполнении осуществляется прогон до следующей точки останова.

  2. На любом шаге трассировки командой Запуск=>Вычислить/Изменить можно вызвать окно «Вычислить/Изменить» (Evaluate/Modify),

В нем ввести в поле «Выражение» формулу и командой Вычислить в поле «Результат» получить вычисленное значение. Если в поле «Выражение» введено имя переменной, то будет доступна команда Изменить, по которой значение, введенное в поле «Новое значение», будет присвоено этой переменной.

Выводы по работе

  1. Данные о состоянии программы можно получить, используя отладочную печать или отладочные средства ИСР.

  2. Чтобы сделать отладочные средства доступными, нужно командой Инструменты=>Опции отладчика вызвать диалоговое окно, в котором установить флаг «Встроенная отладка».

  3. Для контроля значений переменных можно использовать окно отладки «Наблюдатели». В нем при каждом останове программы можно наблюдать текущие значения переменных или выражений с их использованием.

  4. Для трассировки программы предназначено пошаговое выполнение программы в версиях «Пропустить блок» и «Трассировка». В первом случае подпрограмма исполняется за один шаг, а во втором происходит построчное исполнение кодов подпрограммы.

  5. Если есть уверенность в правильности программы до определенной строки, то для ускорения трассировки следует использовать команду Запуск=>Запуск до курсора.

  6. Для задания произвольных точек останова используются команда Запуск=>Добавить СтопТочку=>На строку исходника и окно «СтопТочки».

  7. Для контроля вызова подпрограмм используется окно «Стек вызова».

  8. Для контроля состояния регистров процессора используются окно «CPU» в котором отображаются 16-ричные коды содержимого регистров процессора и значения флагов, а также окно «FPU», в котором отображаются данные о регистрах сопроцессора, выполняющего команды с плавающей точкой.

  9. При каждом останове программы можно, используя команду Запуск=>Вычислить/Изменить, вычислить выражение с текущими значениями переменных, либо присвоить выбранной переменной новое значение.

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