Страница 23 из 69
- 185,186 -
Упражнение 3: возвращение к программе
-----------------------------------------------------------------
Давайте проверим, исправили ли вы ошибку.
Если вы вышли из интегрированой среды или решали другие
программы после упражнения 2, запустите ее снова и создайте файл
WORDCNT.PRJ с текущим проектом. Выберите Run/Run и начните новый
сеанс отладки. Выполните WORDCNT сначала до вызова wordlen, трас-
сируя ее шаг за шагом. На этот раз она работает корректно и зна-
чение, возвращаемое функцией wordlen, равно 2. Это успех!
Однако ваша работа не завершена. Большая часть программы еще
не проверена и может иметь другие ошибки. На следующем этапе вы
должны провести тестирование внутреннего цикла while в main. Бо-
лее полный подход к тестированию включает в себя пошаговое выпол-
нение main до тех пор, пока не будет отработана первая введенная
строка, и проверку на выход из цикла. Проверьте, чтобы каждый шаг
правильно выполнялся и выход из цикла выполнялся в нужной точке.
Но контроль всех выражений - большая работа. Окно Watch от-
ладчика позволяет это сделать довольно легко. В окне Watch выво-
дится одно или более выражений и их текущие значения. Во время
каждого останова отладчик производит пересчет каждого выражения в
окне Watch. Таким образом вы можете наблюдать изменение значений
выражений во время решения вашей программы.
Создайте выражения для всех элементов данных, входящих в
внутренний цикл while (переменная i, строка, начинающаяся с
wordptr и несколько первых элементов wordlencnt).
Окно Watch обычно размещается в нижней части экрана, там же,
где находится окно Message во время компиляции и редактирования.
Оно инициализирует одну яркую пустую строку. Если окно Watch не-
видимо, то это потому, что окно Edit расширено на весь экран;
нажмите F5 и отладчик вернется в полиэкранный режим и окно Watch
восстановится.
Выберите Break/Watch/Add Watch (или комбинацию Ctrl-F7). От-
ладчик откроет окно и выдаст запрос на ввод выражения. Подобно
Debug/Evaluate, Break/Watch/Add Watch использует по умолчанию вы-
ражение, у которого стоит курсор в окне Edit. Если выражение в
окне не i, введите i и нажмите Ввод. Отладчик вычислит текущее
значение i и выведет его в окне Watch.
- 187,188 -
Повторите эту процедуру для пяти выражений: wordptr и
wordlencnt[1]...wordlencnt[4]. После ввода каждого выражения окно
Watch будет вырастать и приспосабливаться к нему. Теперь пошагово
выполните цикл while WORDCNT до тех пор, пока не будет обработана
первая введенная строка. Как только начнете, вы сможете наблюдать
продвижение вперед wordptr и увеличение соответствующего элемента
wordlencnt. Остановитесь, когда wordptr достигнет конца строки и
маркер выполнения выйдет из внутреннего цикла while. Цикл работа-
ет правильно.
Редактирование и уничтожение выражений
--------------------------------------
Вы можете редактировать и уничтожать выражения в окне Watch,
также как и добавлять их.
Для того, чтобы отредактировать или уничтожить выражения -
активизируйте окно Watch. Если вы находитесь в меню системы, то
нажмите F10 и выйдите из него. Нажмите F6, чтобы переключиться с
окна Edit на окно Watch. Редактор высветит выражение, которое вы
можете изменить или уничтожить; перемещение поля выполняется с
помощью клавиш управления курсором.
Попробуйте изменить выражение. Для этого переместите поле на
wordlencnt[4] и выберите Break/Watch/Edit Watch (или Ввод). От-
ладчик откроет окно, содержащее выражение и запрос на его редак-
тирование.
Измените индекс массива с 4 на 6 и нажмите Ввод. Отладчик
изменит выражение в окне WINDOW и выведет его новое значение.
Переместите поле на выражение wordlencnt[3] и выберите Break
- 189,190 -
/WATCN/Delete Watch (или Del, или Ctrl-Y). Отладчик уничтожит вы-
ражение.
Нажмите F6 для активизации окна Edit. Заметьте, что когда
окно Watch разактивизируется, перед выражением, помеченным повы-
шенной яркостью, появляется символ "бриллиант формы" (код F0).
Для того, чтобы активизировать окно Watch, нажмите F6.
Вы можете уничтожить все выражения с помощью
Break/Watch/Remove All Watches. (Для этого окно Watch должно быть
активно). Сейчас уничтожьте все видимые выражения. Окно Watch
возвратится в свое исходное состояние. Для активизации окна Edit
нажмите F6. С помощью этой команды вы можете переключаться с окна
Edit на окно Watch, или наоборот.
Расширение и переключение окон
------------------------------
Правила расширения и переключения окон в отладчике расширены
по сравнению с правилами, которые вы уже изучили при работе с
редактором, компилятором и компановщиком.
Работа с окнами Watch и Edit выполняется в полиэкранном ре-
жиме, подобно тому, как это делается при работе с окнами Edit и
Message при компиляции и редактировании.
Для того, чтобы произвести переключение между двумя окнами -
Edit и Message или Edit и Watch, - нажмите F6.
Чтобы расширить окно до полного экрана - нажмите F8. Для
возврата в полиэкранный режим нажмите F5. Попробуйте это сделать
с окнами Edit и Watch.
Для вывода экрана выполнения выберите Run/User Screen или
Alt-F5. Попробуйте это.
Используйте Alt-F6 для изменения содержимого окна:
- 191,192 -
# когда активно окно Edit, загруженный файл перезагружается
# если активно окно Watch или Message, то нажатие Alt-F6 яв-
ляется переключателем между окном Watch и окном Message
tracking.
Прокрутка выражений в окне Watch
---------------------------------
При добавлении выражений в окно Watch может возникнуть ситу-
ация, когда окно займет около половины экрана. И при добавлении
выражений в этом случае возникает прокрутка содержимого окна. Уп-
равление содержимым окна выполняется с помощью клавиш PgUp, PgDn,
стрелка вверх и стрелка вниз. Если выражение очень длинное и не
помещается в окно, то вы можете воспользоваться горизонтальной
прокруткой с помощью ключей Home, End, стрелка влево и стрелка
вправо (этим средством можно пользоваться и при просмотре длинных
значений выражения).
Упражнение 4: отладка цикла печати
-----------------------------------------------------------------