Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Отладка программы. Окна отладки. Режимы отладки.
В 4.2 я изложил пошаговый способ выполнения программы. Его вполне достаточно для отладки простейших программ. В более сложных случаях можно применять другие способы, с которыми мы сейчас познакомимся. Кстати, зачастую они и более удобны. Итак рассмотрим окна Locals, Watches, Quick Watch, Call Stack и новые способы использования окна Immediate. На рисунке в окне кода вы видите некую процедуру Command1_Click в процессе отладки:
Выполнившись с начала до конца, эта процедура печатает в окне Immediate такую информацию:
Начало работы 20 3 18 4 16 5 14 6 12 7 10 8 Конец работы
Вообразим, что нас такая печать привела в недоумение, мы по своей бестолковости ожидали, что будет напечатано Начало работы 20 3 18 4 Конец работы Чтобы разобраться в случившемся, мы и затеяли отладку.
Окно Locals. Прежде всего при помощи View®Locals Window и View®Immediate Window мы вызвали на экран окна Locals и Immediate. Назначение окна Locals – показывать в режиме прерывания значения локальных переменных выполняемой процедуры. После этого клавишей F8 запустим пошаговый режим выполнения проекта, как это объяснялось в 4.2. После нескольких нажатий на F8 окна Locals и Immediate примут тот вид, что вы видите на рисунке. Value означает " значение". Правда, мы и без окна Locals в любой момент можем узнать значения a и b, просто поместив на них мышиный курсор. Однако применение окна Locals избавляет нас и от этих мизерных трудов. К тому же вы в окне можете видеть информацию о типе переменных. Щелкните по плюсику слева от Me. Форма расскажет вам о текущих значениях своих свойств. Если вы, выполняя таким образом процедуру, перескочите на другую процедуру, то теперь в окне Locals будут видны именно ее локальные переменные. Если вам другие процедуры не интересны, то работайте в пошаговом режиме не клавишей F8, а комбинацией клавиш Shift-F8. При этом все другие процедуры будут проскакиваться мгновенно.
Точки прерывания(Breakpoints). Когда программа большая или циклов много, жать на F8 приходится слишком часто. Но ведь и нужды-то в этом нет. Обычно вам интересно останавливаться только на некоторых строках программы, мимо остальных можно и пролететь. Visual Basic позволяет вам задать такие строки - точки прерывания (Breakpoints). Щелкните по вертикальной серой полосе в левой части окна кода против строки, на которой хотите прерывать выполнение программы. На полосе появится черная точка и вся строка будет выделена черным (смотри рисунок).
Щелкните так же против всех нужных вам строк. Запускайте проект обычным образом (кнопка Start или клавиша F5). Дойдя до первой же точки прерывания, проект перейдет в режим прерывания. Продолжайте его работу клавишей F5. Проект будет останавливаться только на точках прерывания. Убираются точки прерывания так же, как и ставятся - щелчком мыши.
“Беги до курсора” - Run To Cursor. Это еще один способ остановки в нужной вам строке. Поставьте текстовый курсор в нужную строку и нажмите Ctrl-F8. Программа будет выполняться до тех пор, пока не наткнется на строку с курсором. А теперь поставьте курсор в другую строку и снова нажмите Ctrl-F8. Программа продолжит работу с того места, где остановилась, и будет выполняться до тех пор, пока не наткнется на строку с курсором. И так далее.
В процессе выполнения программы в режиме прерывания вы можете достаточно свободно переключаться между разными способами прерывания. Ставьте и убирайте точки прерывания, переставляйте курсор, нажимайте то F8, то Shift-F8, то Ctrl-F8, то F5. Visual Basic будет вас слушаться. Описанные в этом разделе возможности отладки и некоторые другие приведены в меню Debug (отладка).
Окно Watches. Вообразим, что окно Locals не заставило нас поумнеть. Нам все кажется, что цикл должен был прерваться уже при значении b=5. К тому же, мы устали жать на F8. Хорошо бы программа исполнялась в своем обычном сверхбыстром режиме [run], но в тот момент, когда b станет равным 5, перешла в режим прерывания и остановилась, чтобы мы успели посмотреть, что там к чему в этот момент. Итак, нам нужен совсем другой способ остановки - не на заданном операторе, а при выполнении заданного условия. Для этого мы используем окно Watches. Вызовем его так: Debug®Add Watch. Возникнет диалоговое окно Add Watch, в которое вы вводите логическое выражение b=5, которое по нашим расчетам поначалу равно False, но затем в какой-то момент выполнения вроде бы станет равным True. Вот этот самый момент мы и хотим, чтобы Visual Basic поймал и остановил программу. Для этого из трех возможных положений переключателя Watch Type выбираем среднее. Если бы мы хотели просто присматривать за выражением, то выбрали бы верхнее. Нижнее положение приказывает прерваться при любом изменении значения выражения.
Нажмите ОК. А теперь давайте еще присмотрим за выражением b > a. Добавим его в окно Watches аналогично. Запустите проект на выполнение в обычном режиме. После нажатия на кнопку Command1 процедура будет выполняться до тех пор, пока b не станет равным 5, после чего Visual Basic перейдет в режим прерывания и остановится. Этот момент вы и видите на первом из трех рисунков этого раздела. Все описанные мной окна содержат информацию именно на этот момент.
Окно Quick Watch. Кроме этих окон вы видите на рисунке еще одно окно - Quick Watch. Оно понадобилось вот для чего. Иногда в процессе работы в режиме прерывания вам может захотеться узнать, чему равно в настоящий момент значение того или иного выражения из процедуры, например a - 2. Вы можете включить это выражение в окно Watches, но быстрее поступить так: Выделите нужное выражение в окне кода, как это сделано на рисунке, затем Debug®Quick Watch. Окно появляется.
Окно Call Stack. Когда в программе содержится много взаимодействующих процедур, вам при отладке может быть совершенно необходимо разобраться в последовательности их выполнения. В этом случае вам поможет окно Call Stack, которое и покажет вам эту последовательность. Вызывается оно так: View®Call Stack. Окно Immediate может применяться для следующих полезных вещей, о которых я раньше не говорил. Вы можете в режиме прерыванияввести в это окно текст и наблюдать следующие результаты:
|