Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций.docx
Скачиваний:
11
Добавлен:
01.07.2025
Размер:
425 Кб
Скачать
☆

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

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

Инструменты отладки позволяют обнаруживать ошибки программы при ее вы­полнении в режиме отладки и, если программист обладает определенным опытом и навыками , устранить эту ошибку.

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

Запуск программы на выполнение осуществляется командами из меню Run. Набор команд зависит от состояния среды разработки. В режиме проектирования программы можно только запустить, все же остальные возможности недоступны. При запуске можно выбрать один из двух вариантов: без полной компиляции или полную компиляцию всех процедур. Приложение без полной компиляции запускается в среде разработки командой Start или нажатием клавиши F5. При остановке программы при возникновении ошибки переход в режим отладки осуществляется командой Break или нажатием клавиш [ Ctrl + Break ]. В режиме отладки можно выбрать один из вариантов : продолжать выполнение программу или перейти в режим разработки. В режим выполнения можно перейти, нажав повторно клавишу F5 или выбрав команду Continue.

В селе разработке VB инструменты поиска ошибок объединены в меню Debug. Воспользовавшись командой Toolbars меню View, можно отобразить панель инструментов Debug для доступа к основным средствам отладки.

Большинство инструментов отладки можно использовать только в режиме отладки. Перевести приложение в такое состояние можно командой Break или Debug, доступной в диалоговом окне сообщения об ошибке выполнения.. Возможен переход в режим отладки так же путем введения точки останова [ Breakpoint ]. Точка останова – это выделенная строка программы, на которой автоматически останавливается выполнение программы. При достижении этой строки программа переходит в режим отладки.

В VB введена новая возможность установки и удаления точек прерывания в программе – помощью полоски индикаторов. Для отображения полосы индикатора следует установить опцию Margin Indicator Bar во вкладке Editor Format диалогового окна Tools\Options. Полоса индикатора появляется слева в окне кода после установки указанной опции. Если щелкнуть левой кнопкой на этой полосе, то в этом месте появится красная точка и находящаяся рядом строка закрашивается красным цветом. Точки останова можно поместить в любой строке код, включая заголовок процедуры ( Sub / Function / Property ) и строку End. Точки останова нельзя установить только в строках комментариев или пустых строках.

Установить и удалить точки останова можно также с помощью контекстного меню или кнопки Toggle Brearpoint панели инструментов Debug.

Удалить все точки останова во всем проекте можно с помощью команды Clear All Breakpoints меню Debug.

Установленные в среде разработки точки останова не сохраняются вместе с программой и не включаются в EXE – файл при его создании.

Для установки в программе точки останова может использоваться оператор Stop. Если этот оператор встречается в программе, то VB переключается в режим отладки. Однако этот оператор целесообразно использовать только при разработке приложения. В EXE – файлах он выполняет действие, аналогичное оператору End, т.е. приводит к немедленному завершению программы.

Область применения точки останова.

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

Даже сама установка точки останова может помочь при отладке программы. Например, если точка установлена на заголовке процедуры, но переход в режим отладки не произошел, это значит, что данная процедура не вызывается при выполнении программы. Аналогично и для операторов ветвления: если в операторе If ….Then ….Else точка останова находится в ветви True и программа не прерывается, то значит это условие не выполняется. Однако прежде всего точки останова используются для приостановке программы в определенном месте.

Следующая строка

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

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

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

Среда разработки предлагает ряд возможностей задания текущей строки выполнения. При этом текстовый курсор должен находиться в требуемой строке кода.

В меню Debug есть команда Set Next Statement, после вызова которой строка кода, в которой находится текстовый курсор, становится следующей выполняемой строкой. Для вызова этой команды используется также комбинация клавиш [ Ctrl + F9 ].

Если при просмотре программы вы потеряли из виду текущую строку выполнения, то с помощью команды меню Debug \ Show Next Statement можно вернуть ее в поле зрения в окне кода.

Пошаговое выполнение

Команды пошагового выполнения можно вызвать из меню Debug либо из панели инструментов Debug.

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

Команда Шаг с заходом

Команда шаг с заходом вызывается командой Step into панели инструментов Debug или клавишу F8.

При пошаговом выполнении строки кода выполняются одна из другой. После выполнения одной строки кода маркер следующей строки перемещается на одну строку. Шаг с заходом позволяет не только выполнить соответствующий оператор, но и позволяет перейти в процедуру и функцию. При этом логическая последовательность выполнения строк программы сохраняется.

Команда Шаг с обходом

Шаг с заходом выполняется нажатием кнопки Step Over на панели инструментов Debug или нажатием клавиши Shift + F7.

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

Команда Шаг с выходом

Команда Step Out меню Debug позволяет выполнить оставшуюся часть текущей процедуры и возвратиться в точку вызова. Для вызова команды можно воспользоваться комбинацией клавиш [Ctrl + Shift + F8]. Если текущая строка находится в вызванной процедуре, то с помощью команды Step Out остальная часть программы не выполняется пошагово. Отличие команды Step Out от команды Continue состоит в том, что после выхода из процедуры переключение в режим выполнения не происходит , если процедура была вызвана другой процедурой. Если же текущая процедура не была вызвана другой процедурой, то происходит переход в выполнение и VB ожидает возникновения события, выполнения процедуры которого начнется в режиме отладки.

Команда Выполнить до текукщей позиции.

Команда Run To Cursor меню Debug позволяет выполнить программу от текущей строки до строки с установленным в ней текстовым курсором. Если текстовый курсор находится в выполняемой строке, то результат выполнения этой команды будет такой же как и команды Continue. Для вызова команды Run To Cursor используется также комбинация клавиш [ Ctrl +F8]. Команда Run To Cursor используется как правило при отладке программ, содержащих циклы. Она позволяет сразу же перейти к выполнению нужного оператора, тогда как при пошаговом выполнении команду Step into иногда приходится вызывать несколько раз.

Вывод

Основную функцию выполняет команда Step Into, с помощью которой можно построчно выполнять программу. С помощью команды Step Over пошагово выполняется только текущая процедура. Это эффективно в том случае, если нужно протестировать, только текущую процедуру. Вызываемая процедура выполняется за один шаг. Командой Step Over можно начинать поиск для ее локализации. При возникновении ошибки в вызываемой процедуре ее следует проверить с помощью команды Step Into. Задачей команды StepOut является выход из процедуры без пошагового выполнения всех ее операторов. Эта команда применяется тогда, когда при проверки процедуры вы вошли в вызываемую процедуру или если оставшуюся часть процедуры не нужно выполнять пошагово.

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

Вызов списка.

При поиске ошибок часто нужно знать последовательность вызываемых процедур. В окне Call Stack, вызываемом командой Call Stack меню View в режиме отладки, отображается весь список выполняемых в данный момент процедур. Первым отображается имя текущей процедуры. За ним следует список процедур в той последовательности, в которой они были вызваны. Имя процедуры обработки события указывается в конце списка. После завершения процедуры удаляется весь список. Для открытия окна можно воспользоваться комбинацией клавиш [ Ctrl + L]. С помощью кнопки Show осуществляется переход в окно кода к выбранной в списке процедуре.

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