Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Вывод отладочных сообщений. Пошаговое выполнение




И инструменты отладки

 

Подпрограмма может быть запущена на исполнение также с использованием окна непосредственного исполнения. Этот инструмент интегрированной среды предназначен для вывода отладочных сообщений (debug message) во время исполнения программы, а также позволяет вводить и исполнять простые операторы (присваивания и вызова подпрограмм). Окно непосредственного исполнения вызывается с помощью команды View | Immediate Window. Для запуска подпрограммы необходимо указать идентификатор подпрограммы и нажать на клавишу ENTER (рис. 7).

 

 

Рис. 7. Использование окна Immediate Window для запуска подпрограмм

 

       Следует отметить, что подпрограммы в окне непосредственного исполнения могут быть запущены только из простого модуля или модуля объекта текущего документа (например, из модуля ThisDocument). В последнем случае должен быть задан полный идентификатор подпрограммы, то есть с указанием имени модуля.  

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

Рассмотрим простой пример, в котором показан вывод сообщений в окно непосредственного вывода:

 

Public Sub UsingImmediateWindow()

Dim i As Integer, s As Integer

For i = 0 To 10 ' перебираем в цикле переменную i

       s = s + I ' находим сумму i

       ' выводим в Immediate Window значение i и s

       Debug.Print "i ="; i, "s ="; s

Next

End Sub

Окно непосредственного исполнения позволяет программисту выводить промежуточные результаты работы программы, а также реализовать простейшие средства контроля за потоком ее исполнения. Для вывода сообщения в это окно в тексте подпрограммы должен быть указан вызов метода Print объекта Debug, который определен в ядре VBA. В качестве параметров метода Print могут быть указаны литералы, переменные и свойства объектов, разделенные символами «,» или «;». Назначение разделителей в этом методе совпадает с их назначением в операторе Print классического BASIC. Подпрограмма VBA-проекта может быть исполнена в пошаговом режиме (stepping). В этом случае после исполнения очередного оператора процесс останавливается до тех пор, пока не будет активизирована команда на исполнение следующей строки программы. Запуск текущей подпрограммы в пошаговом режиме осуществляется с помощью команды Debug | Step Into. Текущая исполняемая инструкция выделяется цветом (по умолчанию желтым), а на левой границе окна редактора кода (полоса индикаторов) отображается индикатор пошагового исполнения (рис. 8).Для продолжения исполнения подпрограммы в пошаговом режиме должна быть повторно активизирована команда Step Into (с заходом в подпрограммы, вызываемые из текущей подпрограммы) или Step Over (с обходом внутренних подпрограмм). В ходе пошаговой отладки можно наблюдать за изменениями содержимого переменных, указывая на них курсором (рис. 9). Такое пошаговое исполнение, в ходе которого разработчик наблюдает за изменениями переменных и свойств объектов программы для получения сведений о ее оптимизации или устранения ошибок в ней, принято называть отладкой (debugging). Отладка кода позволяет, детально проследив за ходом исполнения кода, обнаруживать логические ошибки в программе, то есть ошибки, не связанные с неверным синтаксисом, а обусловленные неверно построенным алгоритмом.

 

Рис. 8. Пошаговое исполнение кода программы

 

Основными инструментами отладки являются Окно наблюдения (Watch Window) и Окно локальных переменных (Locals Window). Окно наблюдения, которое может быть активизировано командой View | Watch Window, позволяет разработчику добавить к списку переменные для наблюдения за их изменениями в ходе пошагового исполнения (рис. 9).

 

 

Рис. 9. Наблюдение за переменными в окне Watch Window

 

Аналогичные функции имеет окно локальных переменных (View | Locals Window), однако в нем автоматически отображаются только локальные внутренние переменные текущей исполняемой подпрограммы. Еще одним важнейшим средством отладки программ являются точки останова (breakpoints). Точка останова – это способ указания интегрированному отладчику на необходимость перехода исполнения программы к пошаговому режиму в заданной строке программы. Для установки точки останова необходимо указать курсором в редакторе кода на нужную строку программы и выбрать команду Debug | Toggle Breakpoint или указать одинарным щелчком на позицию в области полосы индикаторов. Наличие ассоциированной точки останова отображается в полосе индикаторов закрашенным кружком (по умолчанию темно-красного цвета) (рис. 10).

 

Рис. 10. Определение точки останова

Рассмотрим в качестве примера работы с точками останова простейшую программу, в которой в цикле генерируется 100 случайных чисел и определяется, сколько их них кратны числу 7.

 

Public Sub BreakpointTest()

Dim i As Integer, r As Integer, s As Integer

' инициализация генератора псевдослучайных чисел

Randomize

' формируем 100 чисел

For i = 0 To 100

       r = CInt(Rnd * 100 + 1)

       ' и посчитаем сколько из них без остатка делятся на 7

       If r Mod 7 = 0 Then

             s = s + 1  

       End If

Next

End Sub

Определим точку останова в строке подпрограммы, как это показано на рис. 1.9. Откроем окно наблюдения и добавим для просмотра переменные i, r и s, используя для этого команду Debug | Add Watch и введя в открывшемся диалоговом окне Add Watch идентификатор переменной (рис. 11).

 

 

Рис. 11. Диалоговое окно добавления переменных и выражений

в окно наблюдения

 

Запустив программу на исполнение, можно наблюдать переход в пошаговый режим, когда новое значение переменной r станет впервые кратным 7. При переходе к режиму пошагового исполнения в окне наблюдения можно будет просмотреть актуальное содержимое указанных переменных. Для возобновления нормального режима исполнения программы необходимо повторно выбрать команду Run | Run Sub/UserForm. Далее исполнение будет прерываться в точке останова всякий раз, когда значение r вновь станет кратным 7.

Точка останова необязательно должна быть ассоциирована с конкретной строкой программы. Создать такую неявную точку останова можно, если переменной, указанной в списке окна наблюдения, назначить опцию Break When Value Changes (прерывать при изменении значения) в диалоговом окне Add Watch (рис. 11). Это можно сделать как для вновь добавляемой переменной, так и для ранее указанной в списке с помощью команды Debug | Edit Watch. Активизация такой точки останова происходит всякий в ходе работы программы когда изменяется значение ассоциированной переменной.

Получив начальные представления об инструментах разработки программ продолжим дальнейшее изучение синтаксиса, семантики, информационной и операционной модели языков программирования на примере ранее упоминавшегося языка Visual Basic.










Последнее изменение этой страницы: 2018-04-12; просмотров: 379.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...