русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Пошаговое выполнение программы.


Дата добавления: 2015-09-15; просмотров: 700; Нарушение авторских прав


Различие между командами Trace Into (F7) и Step Over (F8) в том, что при использовании F7 осуществляется трассировка внутри процедур и функций, в то время как использование F8 приведет к обходу вызовов подпрограмм. Эти команды имеют особое значение при выполнении оператора begin основной программы, если программа использует модули, имеющие раздел инициализации. В этом случае, использование F7 приведет к трассировке раздела инициализации каждого модуля, что позволяет увидеть, что инициализируется в каждом модуле. При использовании F8 эти разделы не будут трассироваться, и курсор выполнения переходит на следующую строку после begin.

Рассмотрим следующий (неполный) пример программы:

($D+,L+)

program TestSort;

const

NLMax=100;

type

NumList=array[1..NLMax] of integer;

var

List : NumList;

I,Const : word;

procedure Sort ( var L:NumList; Cnt:Integer);

begin

(sort the list) (сортировка списка)

end; (of proc sort) (процедуры Sort)

begin

randomize;

Count:=NLMax;

for I:=1 to Count do

List[I] := Random(1000);

sort(List,Count);

for I:=1 to Count do

Write(List[I] :8);

Readln

end. {программы TestSort}

Предположим, что Вы отлаживаете процедуру Sort. Вы хотите осуществить трассировку процедуры Sort, включая проверку значения внутри List до вызова Sort. Однако, выполнять 100 раз инициализацию внутри List очень утомительно. Есть ли способ выполнять цикл, не останавливаясь на каждой выполняемой строке.

Да, фактически, существует несколько способов. Во-первых, Вы могли бы выделить этот цикл в отдельную процедуру и нажать клавишу F8 для того, чтобы обойти ее трассировку, но это слишком нерационально. Во-вторых, Вы могли бы установить внутри программы точку прерывания. Мы объясним, что это за точки прерывания, и как они используются немного позже. В конце концов, Вы могли бы использовать команду Run/Go to Cursor (F4). Переместите курсор на строку с вызовом Sort, а затем нажмите на клавишу (F4). Ваша программа будет выполняться до достижения строки, помеченной курсором. Курсор выполнения переместится на эту строку; затем Вы можете начать трассировку с этого места, нажимая на клавишу F7, для того, чтобы можно было сделать трассировку внутри Sort.



Команда Run/Goto Cursor (F4) действует на вложенных уровнях вызовов подпрограмм, даже если их исходный код находится в другом файле. Например, Вы могли бы разместить курсор где-либо внутри процедуры Sort и нажать на клавишу F4; программа выполнялась бы до этой строки. По существу, Sort могла бы быть выделена в отдельный модуль, отладчик бы уже знал, когда нужно остановиться и что отобразить.

Существуют три случая, когда команда Go to Cursor (F4) не будет выполнять программу до отмеченной курсором строки.

Первый, когда Вы расположили курсор между двумя выполняемыми строками; например, на пустой строке или строке с комментариями. В этом случае программа будет выполняться до следующей строки, содержащей оператор, который может быть выполнен.

Второй случай, когда курсор расположен вне процедурного блока, например, на операторе объявления переменной или операторе program. Отладчик будет выводить сообщение "no code generated for this line" (для этой строки код не генерируется).

Третий случай, когда Вы располагаете курсор на строке, которая никогда не выполняется. Например, строка располагается выше курсора выполнения (предполагается, что вы находитесь не в цикле) или строка является частью else - условного оператора, когда выражение if имеет значение true. В этом случае отладчик будет действовать так, как если бы выполнялась команда Run/Run (Ctrl-F9); программа будет выполняться до конца или до точки прерывания.

Предположим, что Вы трассируете процедуру Sort,затем хотите завершить работу программы и посмотреть выходные результаты. Каким способом сделать это? Сначала нужно переместить курсор к последнему оператору end основной части программы, а затем выполнить команду Run/Go to Cursor (F4). Или проще, нужно выполнить команду Run/Run (Ctrl-F9). Она позволяет отладчику продолжить нормальное выполнение программы пользователя. Программа будет выполняться до конца, или до тех пор, пока Вы не достигнете точки прерывания или не будет нажат Ctrl-Break.



<== предыдущая лекция | следующая лекция ==>
Трассировка Вашей программы. | Использование точек прерывания.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.