ГЛАВА 3  НАЧАЛО РАБОТЫ: КОРОТКИЙ ПРИМЕР

     Если вам  не  терпится  начать  работать  с отладчиком Turbo
Debugger и вы не из тех людей,  которые прежде чем  приступить  к
работе  тщательно  проработают все руководство пользователя,  то,
прочитав  эту  главу,  вы  получите  достаточно   знаний,   чтобы
отлаживать  свою  первую  программу.  Когда  вы  изучите основные
принципы работы отладчика,  описанные ниже,  удобный, интуитивный
пользовательский   интерфейс   и   система   контекстно-зависимой
подсказки позволят вам  изучать  возможности  отладчика  по  ходу
работы с ним.

     В этой   главе   вы   познакомитесь   со   всеми   основными
возможностями отладчика Turbo Debugger.  После описания  примеров
программ (одной на Си,  другой на Паскале), имеющихся на одной из
дистрибутивных дискет, вы изучите, как

     -  запускать и останавливать программу,

     -  проверять значения переменных программы,

     - просматривать  сложные  данные,  такие   как   массивы   и
структуры,

     -  изменять значения переменных.

Примеры программ
-----------------------------------------------------------------

     Примеры программ (TCDEMO.C на Си и  TPDEMO.PAS  на  Паскале)
познакомят  вас с двумя важными вещами,  которые необходимо знать
для  того,  чтобы   отлаживать   программу:   как   запускать   и
останавливать  программу  и  как  проверять значения переменных и
структур данных программы.  Сами по себе эти  программы  вряд  ли
могут  оказаться  полезными:  некоторые  их параметры и структуры
данных созданы исключительно для того,  чтобы  продемонстрировать
возможности отладчика Turbo Debugger.

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

     Убедитесь в том, что в вашей текущей директории имются файлы
примеров   программ,   которые  потребуются  при  чтении  данного
руководства.  Пример программы на языке Си  включает  два  файла:
TCDEMO.C   и   TCDEMO.EXE;   пример  на  Паскале  включает  файлы
TPDEMO.PAS и TPDEMO.EXE.

     Для того чтобы начать отладку программы на языке Си, введите
с клавиатуры:

     TD TCDEMO

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

     TD TPDEMO

     Turbo Debugger   загрузит   демонстрационную   программу   и
установит курсор в ее начале.


     Рис.3.1 Исходный вид экрана отладчика после загрузки
             программы TCDEMO

     На этом  экране  имеется  строка главного меню,  окна модуля
(Module) и слежения (Watches), а также строка подсказки.

     Для того чтобы выйти из отладчика и вернуться в ДОС, в любой
момент  можно  нажать  клавиши  Alt-X.  Если,  работая  с  данным
руководством,  вы что-либо безнадежно повредите в программе,  то,
нажав клавиши Ctrl-F2, можно загрузить ее заново и начать отладку
с начала. Однако, имейте в виду, что эта команда не удаляет точек
останова  и отслеживаемых объектов;  если это необходимо сделать,
используйте клавиши Alt-F O.  (Alt-B D также  удаляет  все  точки
останова, но  иногда  перезагрузка быстрее выполняется при помощи
Alt-F O).

     Всякий раз,  когда вам  потребуется  подсказка  по  текущему
окну,  команде меню,  запросу или сообщению об ошибке,  нажимайте
клавишу F1.  Работая самостоятельно с системой меню и нажимая  F1
для  получения  обобщенной  информации  о том,  что делает данная
команда, можно многому научиться.

Работа с отладчиком Turbo Debugger
-----------------------------------------------------------------

     Меню 

     Верхняя строка  экрана  представляет  собой  полосу главного
меню. Для вызова одного из спускающихся меню нажмите либо клавишу
F10  и  при  помощи  клавиш-стрелок  выделите нужный пункт,  либо
клавишу Alt в сочетании с первой буквой названия данного меню.


     Рис.3.2  Линейка меню


     Сейчас нажмите клавишу F10.  Обратите внимание, что при этом
курсор  исчезает  из  окна  модуля,  а  пункт  File главного меню
становится выделенным.  Нижняя строка  экрана  также  изменяется,
показывая, какие команды содержит меню File.

     С помощью  клавиш  управления курсором можно перемещаться по
системе  меню,  а  с  помощью  клавиши  "Стрелка  вниз"  вызывать
спускающиеся  меню,  соответствующие  выделенному пункту главного
меню.

     Если у вас имеется "мышь",  то вы можете  нажать  кнопку  на
пункте меню в линейке этого меню.

     Для возврата  на предыдущий уровень системы меню используйте
клавишу Esc.  Когда выделенным  является  только  пункт  главного
меню,  нажатие  клавиши  Esc вернет вас в окно модуля,  а главное
меню перестанет быть активным.

Строка подсказки 

     В нижней  строке  экрана  указываются  связанные  с  контекстом
функциональные  клавиши  и  их  функции.

     Рис.3.3  Строка состояния

     Содержание этой  строки меняется в зависимости от того,  что
именно вы вводите (команду меню,  ответ  на  запрос  и  т.д.).  К
примеру, нажмите клавишу Alt и держите ее нажатой в течение одной
-двух секунд.  Заметьте, что содержание нижней строки изменилось,
показывая вам,  какие функциональные клавиши можно использовать в
сочетании с клавишей Alt.

     Теперь на секунду нажмите клавишу Ctrl. Команды, указанные в
нижней строке, являются сокращенной формой команд локального меню
для текущего подокна (участка окна).  Они меняются в  зависимости
от вида текущего окна. Более подробно об этом позже.

     При входе в систему меню линейка состояния снова изменяется,
показывая, что делает тот или иной пункт меню.  Нажмите  F10  для
перехода к  линейке  меню  и  нажмите клавишу -> для того,  чтобы
выделить опцию File.  В линейке состояния  будет  написано  "File
oriented functions" ("Функции для работы с файлами").  При помощи
"стрелки вниз" спускайтесь по меню File,  и посмотрите, как будет
изменяться информация в строке состояния.  Нажмите Esc или кнопку
мыши на окне Module, чтобы выйти из сисиемы меню.

Окна

     Область окон занимает большую часть экрана.  Эта та область,
в   которой   вы  проверяете  различные  части  своей  программы,
просматривая их в разных окнах.

     Исходное изображение  на  экране  содержит  два  окна:  окно
модуля и окно слежения.  Пока не будут открыты другие окна или не
будут изменены размеры  этих  двух,  они  отображаются  одно  под
другим,  то  есть занимают весь экран,  не перекрывая друг друга.
Новые окна будут автоматически перекрывать существующие,  пока вы
не переместите их в другое место экрана.

     Рис.3.4  Окна Module и Watches без перекрытия

     Заметьте, что  окно  модуля  окружено  двойной  рамкой и его
заголовок  выделен  яркостью.  Это  означает,  что  оно  является
активным   окном.   Для   перемещения   внутри   активного   окна
используются клавиши управления курсором (клавиши  с  изображение
стрелок, Home, End, PgUp и т.д.). Для того чтобы перейти в другое
окно,  нажмите клавишу F6.  Сделайте это сейчас.  Активным станет
окно слежения:  его рамка станет двойной, а заголовок выделенным.

     Для создания  новых окон используется пункт View главного меню.
Например, для открытия окна Stack выберите View|Stack. Окно Stack
раскроется в верхней части  окна Module.

     Чтобы удалить   активное   окно,   нажмите  клавишу  Alt-F3.
Сделайте это сейчас. Окно стека исчезнет.

     Turbo Debugger  запоминает последнее закрытое окно, так что при
необходимости его  можно  восстановить.  Если  вы  случайно  закрыли
какое-либо окно,  выберите  Window|Undo  Close.  При  этом  снова
появится кно Stack.  Для восстановления последнего открытого окна
также можно нажать Alt-F6.

     Меню Window  содержит   команды,   позволяющие   настраивать
внешний   вид   окон,   которые  уже  имеются  на  экране.  Можно
переместить окно в другое место  экрана,  а  также  изменить  его
размер. (Для этого можно также использовать клавишу Ctrl-F5).

     Выберите Window|Size/Move  и  с  помощью  клавиш  управления
курсором переместите активное окно (окно стека)  в  другое  место
экрана.   Держа   нажатой  клавишу  Shift,  с  помощью  клавиш  с
изображением  стрелок  измените  размер  этого  окна.  Когда   вы
получите окно,  местоположение и размеры которого вас устраивают,
нажмите клавишу Enter.

     Теперь, чтобы подготовиться  к  чтению  следующего  раздела,
удалите с экрана окно стека, нажав Alt-F3. В зависимости от того,
какую демонстрационную программу вы загрузите в отладчик  (на  Си
или  на  Паскале),  переходите  либо к следующему разделу (пример
программы  на  Си),  либо  к  разделу  c  примером  программы  на
Паскале.

Отладка примера программы на языке Си
-----------------------------------------------------------------

     В первом столбце  окна  модуля  высвечивается  стрелка  (>),
которая  показывает,  на  какой  строке  Turbo Debugger остановил
выполнение программы.  Поскольку вы еще не  запускали  программу,
стрелка  стоит  на  ее первой строке.  Нажмите клавишу F7,  чтобы
выполнить  одну  строку  исходного  текста.  Стрелка   и   курсор
переместятся на вторую исполняемую строку программы.

     Обратите внимание  на  правое поле заголовка окна модуля.  В
нем указывается номер  строки,  в  которой  находится  курсор.  С
помощью  клавиш  управления курсором переместите его вверх-вниз и
посмотрите, как меняется номер строки в заголовке окна.

     Из меню Run можно увидеть,  что имеется  несколько  способов
управления  выполнением  программы.  Допустим,  вы хотите,  чтобы
выполнение программы было остановлено на строке 39.

     Прежде всего,  позиционируйте курсор на строку 39,  а  затем
нажмите  клавишу F4.  По этой команде программа будет выполняться
до (но не включая) строки 39.  Теперь нажмите клавишу F7. По этой
команде  будет  выполнена одна строка исходного текста;  в данном
случае будет выполнена строка 38 - вызов функции showargs. Курсор
моментально перескочит на строку 151,  где начинается определение
функции  showargs.  Продолжая  нажимать  клавишу  F7,   выполните
последовательно  все  операторы  этой  функции.  После  этого  вы
вернетесь на строку,  следующую за  вызовом  функции  showargs  -
строку 40.  Нажмите Alt-F8 для останова программы при возврате из
showargs.  Возврат также произойдет на  строку  40.  Эта  команда
очень полезна для перехода за конец функции.

     Если, находясь  на  строке  39,  вместо  клавиши  F7  нажать
клавишу F8, курсор сразу же перейдет на строку 40, а не на начало
функции.  Команда F8, так же, как и F7, выполняет функцию, но без
входа в нее.

     Рис.3.5 После  возврата  из  функции   showargs   выполнение
программы останавливается

     Для того  чтобы выполнить программу до какого-то конкретного
места,  можно напрямую указать имя функции или номер  строки,  не
перемещая   курсор  к  этой  строке  исходного  текста,  а  затем
запустить программу.  Для задания метки,  на  которой  необходимо
остановить  выполнение  программы,  нажмите  клавиши  Alt-F9.  На
экране  появится  поле  запроса.  Введите  с   клавиатуры   слово
readaline   и  нажмите  Enter.  Программа  начнет  выполняться  и
остановится в начале функции readaline (строка 142).

Задание точек останова   ----------------------------------------

     Еще один  способ   указания   места,   на   котором   должна
остановиться  программа,  заключается  в установке точки останова
(breakpoint).  Самый  простой  способ  установки  точки  останова
состоит в использовании клавиши F2.  Переместите курсор на строку
44 и нажмите клавишу  F2.  Turbo  Debugger  выделит  эту  строку,
показывая, что на ней установлена точка останова.

     Если у  вас  имеется  "мышь",  то вы можете нажать кнопку на
первых двух столбцах окна Module,  что  приводит  к  переключению
точек останова.

     Рис.3.6 Точка останова в строке 44

     Теперь нажмите   клавишу  F9,  чтобы  продолжить  выполнение
программы без прерывания.  Экран переключится на вывод программы.
Теперь демонстрационная программа работает и ожидает ввода строки
текста.  Введите abc, пробел, def, а затем нажмите клавишу Enter.
Экран  переключится  обратно на среду отладчика,  и стрелка будет
находиться на строке 44,  где вы установили  точку  останова,  на
которой  было остановлено выполнение программы.  Затем нажмите F2
снова, что приведет к ее отмене.

     Подробное описание  точек  останова,  включая   условные   и
глобальные точки останова, приведено в главе 7.

Использование окна слежения   -----------------------------------

     В окне  слежения  (Watches),  расположенном  в  нижней части
экрана,   отображаются   указанные   пользователем    переменные.
Например,  для  того  чтобы  проследить  за  значением переменной
nwords,  позиционируйте курсор на имя этой переменной в строке 42
и нажмите клавиши Ctrl-W.

     Если у  вас  имеется  "мышь",  то вы можете нажать кнопку на
Ctrl-W в строке состояния.

     Рис.3.7 Переменная Си в окне слежения

     Переменная nwords появится в окне слежения  в  нижней  части
экрана  вместе  со своим типом (unsigned int - целое без знака) и
значением.  По мере выполнения программы значение в окне слежения
будет обновляться, отражая текущее значение переменной.

Проверка простых объектов данных Си-программы   -----------------

     Когда вы   останавливаете   выполнение   программы,  имеется
несколько способов просмотра данных  с  помощью  команды  Inspect
(проверка).  Это  мощное  средство  позволяет проверять структуры
данных точно в таком же виде,  который используется при написании
программы.

     Команды проверки  (в  разных  локальных  меню и в меню Data)
позволяют проверять любые указанные переменные.  Предположим,  вы
хотите   проверить  значение  переменной  nlines.  Позиционируйте
курсор так,  чтобы он находился под одной из букв слова nlines, и
нажмите  клавиши  Ctrl-I.  На  экране  раскроется  окно  проверки
(Inspector).

     Рис.3.8 Окно проверки

     В заголовке указано имя переменной; во второй строке показан
ее адрес в памяти.  В третьей строке показано, какого типа данные
хранятся в переменной nlines (это тип int языка  Си).  Справа  от
типа данных показано текущее значение переменной.

     Теперь, проверив  переменную,  нажмите  клавишу  Esc,  чтобы
закрыть окно проверки.  Для удаления окна проверки (как и  любого
другого окна) можно также использовать клавишу Alt-F3.

     Давайте еще раз повторим то, что было сделано. Нажав клавишу
Ctrl,  вы  получаете  в  нижней  строке  экрана  перечень  команд
локального  меню  окна  модуля.  Нажав  клавишу  I,  вы выбираете
команду Inspect.

     Для того   чтобы   проверить   элемент    данных,    который
отображается   в   окне   модуля   в  неудобной  форме,  выберите
Data|Inspect.  На экране появится блок диалога,  в  которое  надо
ввести  имя  переменной  для  проверки.  Введите имя letterinfo и
нажмите  клавишу  Enter.  На  экране  появится   окно   проверки,
показывающее  значения элементов массива letterinfo.  В заголовке
окна проверки указано  имя  переменной,  которую  вы  проверяете,
точно в таком же виде, как она описана в программе. Первая строка
после заголовка окна  содержит  адрес  первого  элемента  массива
letterinfo   в  основной  памяти.  С  помощью  клавиш  управления
курсором можно просмотреть все 26 элементов массива letterinfo. В
следующем разделе показано, как проверять такие сложные структуры
данных.

Проверка составных объектов данных Си-программы  ----------------

     Составные объекты данных,  такие как  массивы  и  структуры,
состоят из нескольких элементов.  Переместите курсор к четвертому
элементу массива  letterinfo  (элементу  с  номером  [3]).  Нажав
клавиши Alt-F10,  вызовите локальное меню окна проверки,  а затем
нажав клавишу I, выберите из него команду Inspect (проверить). На
экране  появится  новое  окно  проверки,  показывающее содержимое
данного  элемента  массива.  В  этом  окне  показано   содержимое
структуры типа linfo.

     Рис.3.9  Проверка структуры

     Когда вы  помещаете  курсор  на  одно  из имен элементов,  в
нижнем  подокне  окна  проверки  появляется  тип   данных   этого
элемента.  Если  бы один из этих элементов в свою очередь являлся
составным объектом данных,  вы могли бы выполнить команду Inspect
и еще глубже проникнуть в структуру данных.

     Нажмите клавиши  Alt-F3,  чтобы  удалить оба окна проверки и
вернуться в окно  модуля.  (Это  удобный  способ  удаления  сразу
нескольких  окон  проверки.  Если  бы  вы нажали клавишу Esc,  то
удалилось бы только последнее окно проверки.)

Изменение значений переменных си-программы   --------------------

     До сих пор мы рассматривали только способы  просмотра данных
в программе. Теперь давайте изменим значение элемента данных.

     С помощью  клавиш  управления курсором перейдите к строке 38
исходного текста.  Поместите курсор на переменную totalcharacters
и нажмите клавиши Ctrl-I,  чтобы проверить эту переменную.  После
того, как откроется окно проверки, нажмите клавиши Alt-F10, чтобы
вызвать локальное меню окна проверки и выберите опцию Change (или
нажмите клавишу C).  Появится поле запроса, в которое надо ввести
новое значение переменной.

     Рис.3.10 Запрос команды Change

     В ответ  на  этот  запрос  вы  можете ввести любое выражение
языка Си,  в  котором  вычисляется  некоторое  значение.  Введите
выражение  totalcharacters+4 и нажмите клавишу Enter.  Значение в
окне проверки станет равным 10L (0xA).

     Для того чтобы изменить значение элемента данных, который не
отображается   в   окне  модуля,  выберите  Data|Evaluate/Modify.
Появится поле запроса,  в которое  надо  ввести  имя  переменной,
значение которой необходимо изменить.  Введите имя argc и нажмите
Enter.  Затем дважды нажмите клавишу Tab, чтобы перейти в строку,
помеченную  как  New Value (новое значение).  Введите число 123 и
нажмите  Enter.  Целочисленный  результат  (во   второй   строке)
изменится и станет равным int 123 (0x7B).

     Рис.3.11  Блок диалога Evaluate/Modify

     Это было  краткое  введение  в использование отладчика Turbo
Debugger для отладки программы на  языке  Turbo  C.  В  главе  14
рассматривается  более  сложный пример сеанса отладки,  в котором
используется версия данной программы, содержащая ошибку.

Отладка примера программы на языке Паскаль
-----------------------------------------------------------------

     В первом  столбце  окна  модуля  высвечивается  стрелка (>),
которая показывает,  на какой  строке  Turbo  Debugger  остановил
выполнение  программы.  Поскольку  вы еще не запускали программу,
стрелка стоит на ее первой  строке.  Нажмите  клавишу  F7,  чтобы
выполнить   одну   строку  исходного  текста.  Стрелка  и  курсор
переместятся на вторую исполняемую строку программы.

     Обратите внимание на правое поле заголовка  окна  модуля.  В
нем  указывается  номер  строки,  в  которой находится курсор.  С
помощью клавиш управления курсором переместите его вверх и вниз и
посмотрите, как меняется номер строки в заголовке окна.

     Для того   чтобы   выполнить   программу   до   строки  221,
позиционируйте  курсор  на  эту  строку  и  нажмите  клавишу  F4.
Программа  TPDEMO  попросит вас ввести строку.  Введите несколько
букв и нажмите клавишу Enter.  Теперь, когда курсор установлен на
строке 221,  нажмите клавишу F7,  чтобы выполнить эту одну строку
исходного текста.  Поскольку в этой строке содержится  вызов  еще
одной  процедуры,  стрелка переместится к первой строке процедуры
ProcessLine.Прожолжая нажимать F7,  вы можете пошагово  выполнить
функцию  ProcessLine  и  вернуться к строке после вызова - строке
224..  Нажмите  клавиши  Alt-F8,  чтобы   остановить   выполнение
программы  после  возврата из процедуры ProcessLine.  Эта команда
очень удобна в том случае,  если желательно сразу перейти в конец
процедуры или функции.

     Если в строке 221 вместо F7 нажать F8, курсор вместо функции
перейдет непосредственно в строку 224. F8 аналогична клавише F7 в
том, что она выполняет функцию, но не по шагам исходного кода.

     Рис.3.12 После возврата  из  процедуры  выполнение программы
останавливается

     Для того чтобы выполнить программу до  какого-то конкретного
места,  можно  напрямую указать имя функции или номер строки,  не
перемещая  курсор  к  этой  строке  исходного  текста,  а   затем
запустить  программу.  Для  задания метки,  на которой необходимо
остановить  выполнение  программы,  нажмите  клавиши  Alt-F9.  На
экране появится поле запроса.  Введите с клавиатуры имя GetLine и
нажмите Enter.  Программа  начнет  выполняться  и  остановится  в
начале функции GetLine.

Задание точек останова   ----------------------------------------

     Еще один   способ   указания   места,   на   котором  должна
остановиться программа,  заключается в установке  точки  останова
(breakpoint).  Самый  простой  способ  установки  точки  останова
состоит в использовании клавиши F2.  Переместите курсор на строку
121  и  нажмите  клавишу  F2.  Turbo Debugger выделит эту строку,
показывая, что на ней установлена точка останова.

     Если у вас имеется "мышь",  то вы можете  нажать  кнопку  на
двух первых столбцах окна Window для переключения точек останова.

     Рис.3.13 Точка останова в строке 121

     Теперь нажмите   клавишу  F9,  чтобы  продолжить  выполнение
программы без прерывания.  Экран переключится на вывод программы.
Теперь демонстрационная программа работает и ожидает ввода строки
текста.  Введите abc, пробел, def, а затем нажмите клавишу Enter.
Экран  переключится  обратно на среду отладчика,  и стрелка будет
находиться на строке 121,  где вы установили точку  останова,  на
которой  было  остановлено выполнение программы.  Теперь повторно
нажмите F2 для ее отмены.

     Подробное описание  точек  останова,  включая   условные   и
глобальные точки останова, приведено в главе 7.

Использование окна слежения   -----------------------------------

     В окне  слежения  (Watches),  расположенном  в  нижней части
экрана,   отображаются   указанные   пользователем    переменные.
Например,  для  того  чтобы  проследить  за  значением переменной
NumWords,  позиционируйте курсор на имя этой переменной в  строке
144 и нажмите клавиши Ctrl-W (сокращенная форма команды Alt-F10
локального меню).

     Если у вас имеется "мышь",  то вы  можете  нажать  кнопку  в
строке состояния.

     Рис.3.14 Переменная паскаль-программы в окне слежения

     Переменная NumWords  появится в окне слежения в нижней части
экрана  вместе  со  своим  типом  (word)  и  значением.  По  мере
выполнения  программы значение в окне слежения будет обновляться,
отражая текущее значение переменной.

Проверка простых объектов данных паскаль-программы   ------------

     Когда вы  останавливаете   выполнение   программы,   имеется
несколько  способов  просмотра  данных  с помощью команды Inspect
(проверка).  Это мощное средство  позволяет  проверять  структуры
данных точно в таком же виде,  который используется при написании
программы.

     Команды проверки (в разных локальных меню  и  в  меню  Data)
позволяют проверять любые указанные переменные.  Предположим,  вы
хотите проверить  значение  переменной  NumLines.  Позиционируйте
курсор  на  строку 121 так,  чтобы он находился под одной из букв
слова NumLines,  и нажмите клавиши Ctrl-I.  На экране  раскроется
окно проверки (Inspector).

     Рис.3.15 Окно проверки

     В первой  строке  окна  указано  имя  переменной;  во второй
строке - ее адрес в памяти.  В третьей  строке  показано,  какого
типа  данные  хранятся  в переменной NumLines (это тип word языка
Паскаль).  Справа  от  типа  данных  показано  текущее   значение
переменной.

     Теперь, проверив  переменную,  нажмите  клавишу  Esc,  чтобы
закрыть окно проверки.  Для удаления окна проверки (как и  любого
другого окна) можно также использовать клавишу Alt-F3.

     Давайте еще раз повторим то, что было сделано. Нажав клавишу
Ctrl,  вы  получаете  в  нижней  строке  экрана  перечень  команд
локального  меню  окна  модуля.  Нажав  клавишу  I,  вы выбираете
команду Inspect.

     Для того   чтобы   проверить   элемент    данных,    который
отображается в окне модуля в неудобной форме, нажмите клавиши Alt
-D I.  На экране появится поле запроса, в которое надо ввести имя
переменной  для  проверки.  Введите  имя  LetterTable  и  нажмите
клавишу Enter.  На экране появится  окно  проверки,  показывающее
значения   элементов   массива   LetterTable.  С  помощью  клавиш
управления курсором можно просмотреть все  26  элементов  массива
LetterTable.  В  заголовке  окна проверки указано имя переменной,
которую вы проверяете,  точно в таком же виде,  как она описана в
программе.  В  следующем  разделе  показано,  как проверять такие
сложные структуры данных.

Проверка составных объектов данных паскаль-программы   ----------

     Составные объекты данных,  такие как  массивы  и  структуры,
состоят из нескольких элементов.  Переместите курсор к четвертому
элементу  массива  LetterTable  (элементу  [D]).  Нажав   клавиши
Alt-F10,  вызовите  локальное  меню окна проверки,  а затем нажав
клавишу I,  выберите из  него  команду  Inspect  (проверить).  На
экране  появится  новое  окно  проверки,  показывающее содержимое
данного элемента массива.  В этом окне показано содержимое записи
типа LInfoRec.

     Рис.3.16 Проверка структуры

     Когда вы  помещаете  курсор  на  одно  из имен элементов,  в
нижнем  подокне  окна  проверки  появляется  тип   данных   этого
элемента.  Если  бы один из этих элементов в свою очередь являлся
составным объектом данных,  вы могли бы выполнить команду Inspect
и еще глубже проникнуть в структуру данных.

     Нажмите клавишу Alt-F3,  чтобы удалить оба окна  проверки  и
вернуться  в  окно  модуля.  (Это  удобный  способ удаления сразу
нескольких окон проверки.  Если бы  вы  нажали  клавишу  Esc,  то
удалилось бы только последнее окно проверки.)

Изменение значений переменных паскаль-программы    --------------

     До сих пор мы рассматривали только способы  просмотра данных
в программе. Теперь давайте изменим значение элемента данных.

     С помощью  клавиш управления курсором перейдите к строке 103
исходного текста.  Поместите курсор на  переменную  NumLetters  и
нажмите  клавиши  Ctrl-I,  чтобы проверить эту переменную.  После
того, как откроется окно проверки, нажмите клавиши Alt-F10, чтобы
вызвать локальное меню окна проверки.  Выберите опцию Change (или
нажмите клавишу C). (То же можно было сделать, нажав клавиши Ctrl
-C.) Появится поле запроса,  в которое надо ввести новое значение
переменной.

     Рис.3.17  Блок диалога Change

     В ответ на этот запрос  вы  можете  ввести  любое  выражение
языка Паскаль,  в котором вычисляется некоторое значение. Введите
выражение NumLetters+4 и нажмите клавишу Enter.  Значение в  окне
проверки станет равным 10.

     Для того чтобы изменить значение элемента данных, который не
отображается  в  окне  модуля,   выберите   Data|Evaluate/Modify.
Появится  поле  запроса,  в  которое  надо ввести имя переменной,
значение которой необходимо  изменить.  Введите  имя  NumLines  и
нажмите  Enter.  Результат отображается в среднем подокне.  Затем
дважды нажмите клавишу Tab,  введите число 123 и  нажмите  Enter.
Значение переменной NumLines станет равным 123.

     Рис.3.18  Блок диалога Evaluate/Modify

     Это было  краткое  введение  в использование отладчика Turbo
Debugger для отладки программы на языке Turbo Pascal.  В главе 14
рассматривается более сложный пример отладки.
