Опубликован: 01.04.2010 | Уровень: для всех | Доступ: платный | ВУЗ: Национальный исследовательский университет "Высшая Школа Экономики"
Лекция 3:

Средства получения справки и отладки программ

< Лекция 2 || Лекция 3: 123 || Лекция 4 >

Окно контрольных значений (Watches)

Это окно используется для отслеживания значений переменных или выражений. Можно одновременно задавать несколько контрольных выражений. Можно использовать контрольные значения для задания моментов останова программы.

Определяемое пользователем контрольное выражение позволяет следить в процессе пошагового выполнения программы за изменением значения этого выражения.

Чтобы определить новое контрольное выражение, выполните команду Add Watch (Добавить контрольное значение) из меню Debug. Кнопка панели инструментов

Добавление нового контрольного значения

Рис. 3.12. Добавление нового контрольного значения

Вводимое в строку Expression (см. рис. 3.12) выражение может быть переменной, свойством или любым другим допустимым в Visual Basic выражением. Если в окне модуля перед выполнением команды Add Watch было выделено некоторое выражение, то оно автоматически отображается в строке Expression.

Допускается перетаскивание мышью выделенного выражения из окна модуля в окно контрольных значений Watches.

Контекст контрольного выражения ( Context ) - это область определения контрольного выражения:·поле Procedure отображает имя процедуры, в которой вычисляется введенное выражение. Допускается выбор всех процедур модуля либо отдельной процедуры.

Поле Module отображает имя модуля, в котором вычисляется выражение. Допускается выбор всех модулей либо отдельного модуля.

Строка Project отображает имя текущего проекта. Вычисление выражений вне текущего проекта невозможно.

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

В области Watch Type (Тип контрольного значения) можно задать реакцию Visual Basic на значение контрольного выражения:

  • Watch Expression (Контрольное выражение) отображает в окне контрольных значений заданное выражение и его значение.
  • Break When Value is True (Останов, если значение выражения истинно) - выполнение программы автоматически прерывается, когда значение выражения становится истинным или ненулевым (недопустимо для строковых выражений).
  • Break When Value Changes (Останов при изменении значения выражения) - выполнение программы автоматически прерывается при изменении значения выражения в указанном контексте.

Введенное выражение и его значение отображаются в окне Watches ( рис. 3.13).

Окно контрольных значений

Рис. 3.13. Окно контрольных значений

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

Команда Edit Watch (Изменить контрольное значение) из меню Debug позволяет отредактировать или удалить контрольное выражение.

Команда доступна только при установленном контрольном значении, даже если окно контрольных значений закрыто.

Окно диалога Edit Watch ( рис. 3.14)похоже на окно Add Watch и элементы окна Edit Watch устанавливаются точно также как элементы окна Add Watch. Кнопка панели инструментовФункциональные клавиши Ctrl+W.

Добавление контрольного выражения

Рис. 3.14. Добавление контрольного выражения

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

Окно контрольных значений Quick Watch

Рис. 3.15. Окно контрольных значений Quick Watch

Для добавления просматриваемого в окне Quick Watch ( рис. 3.15) выражения в список контрольных выражений следует нажать кнопку Add. Кнопка панели инструментовфункциональные клавиши Shift+F9.

Важно:
  • Контрольные выражения не сохраняются вместе с программой.

Контрольные точки или точки останова

Точка останова ( Breakpoint ) представляет собой строку процедуры, на которой разработчик во время отладки планирует остановить выполнение программы. Обычно точки останова используются в больших программах с целью определения их поведения. Имеет смысл устанавливать контрольные точки там, где предположительно может возникнуть ошибка, или в местах, которые отмечают прохождение логических частей программы, например, окончание ввода данных, расчет промежуточных результатов и т.п.

Для установки контрольной точки переместитесь на нужную строку процедуры и нажмите пиктограммуМожно выполнить команду Debug-Toggle Breakpoint (Отладка-Точка останова) или нажать клавишу F9. Можно сделать щелчок на вертикальную полосу слева от строки процедуры. Строка подсвечивается цветом точки останова ( Breakpoint Text ), задаваемым на вкладке Editor Format команды Tools-Options. Обычно это коричневый цвет.

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

Если точка останова задана в строке, содержащей несколько операторов, разделенных двоеточием (:), останов происходит в первой инструкции такой строки.

Если точки останова больше не нужны, их надо снять. Отмена всех точек останова производится командой Clear All Breakpoints (Снять все точки останова) из меню Debug или клавишами Ctrl+Shift+F9. Отменить действие этой команды нельзя.

Для снятия одной точки останова выполните команду Toggle Breakpoint из меню Debug для строки процедуры, содержащей точку останова. Можно нажать клавишу F9 или пиктограммуМожно сделать щелчок на установленную точку на вертикальной полосе слева от строки процедуры. Точка останова удаляется и подсветка строки снимается.

Замечания:
  • Нельзя установить точку останова на пустой строке или на строке, содержащей неисполняемые инструкции, например комментарии, объявление переменных.
  • Точки останова не сохраняются вместе с программой.

Трассировка или пошаговое выполнение программы

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

Для запуска пошагового режима можно нажать одну из кнопокпанели инструментов Debug или выполнить соответствующие команды из меню Debug. Трассировку можно выполнять с начала программы или с точки останова после прерывания программы. При трассировке на вертикальной полосе слева от выполняемого оператора расположена стрелка - указатель выполняемого оператора.

Команды пошагового режима
Команда Пиктограмма Клавиша Описание
Step Into Шаг с заходом

F8 Последовательное выполнение всех строк программы (вызывающей и вызываемой процедур)
Step Over Шаг с обходом

Shift+F8 Выполнение вызываемой процедуры как одной инструкции. Используется для продвижения по командам вызывающей процедуры без захода внутрь вызываемых процедур
Step Out Шаг с выходом

Ctrl+Shift+F8 Выполнение оставшейся части вызываемой процедуры как одной инструкции с выходом на оператор вызывающей процедуры, непосредственно следующий за вызовом процедуры
Run to Cursor Выполнить до текущей позиции

Ctrl+F8 Выбор оператора останова программы. Используется для продвижения по логическим разделам программы, например, по большим циклам
Set next Statement Задать следующую инструкцию

Ctrl+F9 Изменение порядка выполнения операторов. Используется для повтора команд внутри текущей процедуры, а также для пропуска нежелательных операторов. Достаточно переместить точку вставки на нужную инструкцию и нажать эту пиктограмму. Можно переместить указатель выполняемого оператора (стрелка слева) в нужную строку процедуры. Допускается выбор строки программы, расположенной как до, так и после текущего оператора. Нельзя задать в качестве следующей выполняемой команды оператор в другой процедуре
Show next Statement Показать следующую инструкцию

Подсвечивает следующую по порядку инструкцию

Перечисленные команды доступны только в режиме отладки.

Удобно:
  • при трассировке программы видеть на экране одновременно окно программы, окно рабочей книги и другие окна редактора VB. Тогда можно следить за изменениями, происходящими в рабочей книге, в значениях переменных и т.д. Для удобного расположения окон самостоятельно управляйте их размерами и размещением или используйте для этого команды меню Window.

Использование объекта Debug

Объект Debug используется для организации вывода в окно Immediate в режиме выполнения программы. Объект имеет только один метод Print.

Синтаксис оператора Debug.Print [outputlist]

  • outputlist - список распечатываемых переменных или выражений, указывать необязательно. Если аргумент опущен, выводится пустая строка.
  • Ссылка на объект Debug является обязательной.

Данные отображаются в окне Immediate с учетом национальной настройки, т.е. используется соответствующее форматирование. Значения типа Date выводятся в стандартном кратком формате дат, установленном в системе. Логические значения печатаются как True или False.

Для печати нескольких выражений их можно разделять запятой, точкой с запятой или пробелом. Различные разделители обеспечивают различные возможности выравнивания распечатываемых выражений в окне Immediate (подробно см. Help ).

< Лекция 2 || Лекция 3: 123 || Лекция 4 >
Дмитрий Денисов
Дмитрий Денисов

Еще раз повторяю вопрос  - отправил договор и сканы документов по почте - в начале августа, до  5 го, внес предоплату - летом действовала скидка - чтобы пройти курс в августе, но я уезжал в Москву. По возвращению - и  в течение месяца - никакого ответа, никаких зачислений, ничего. Как проверить, пришли ли мои документы в Интуит, предоплата, почему нет зачисления.

Дмитрий Денисов
Дмитрий Денисов

Как записаться на курс, оплатить, не ориентируюсь в программе.

Ранее у Вас учился.

Работаю преподавателем, есть справка. Как получить скидку, т.е. оплата 2000


 

Елизавета Cафронова
Елизавета Cафронова
Россия, Выкса, НИТУ МИССиС
Иван Чуприков
Иван Чуприков
Россия, пгт. Чульман