Шаг 16.
Средства отладки в Microsoft Access 97. Окна отладки

    На этом шаге мы более подробно остановимся на использовании окон отладки.

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

    В Microsoft Access 97 имеется три окна отладки:


Рис.1. Внешний вид окна отладки

    Переключение между окнами локальных контрольных значений осуществляется путем выбора вкладок Локальные и Контрольные. Окно отладки остается на экране независимо от выбранной вкладки.

    Для того чтобы открыть окна отладки следует открыть модуль и нажать кнопку Debug (Окно отладки) на панели инструментов. Кроме того, окна отладки открываются из любого режима Microsoft Access путем выбора команды View (Вид) | Debug (Окно отладки).

    Коротко остановимся на назначении каждого из перечисленных окон.

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

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

    Sum=0

изменит значение переменной Sum. После этого можно продолжить выполнение программы с новым значением переменной.

    Окно Locals (окальных значений) показывает значения всех переменных текущей процедуры. Содержимое этого окна меняется по мере того, как управление передается от процедуры к процедуре.

    В окне локальных значений выводится список переменных в трех столбцах:

    Некоторые переменные (например, определяемые пользователем типы, массивы, объекты) могут содержать иерархическую информацию. Для управления отображением этой информации используется кнопка с символом "+", расположенная слева от имен переменных. Если окно локальных значений является видимым, то его содержимое автоматически изменяется при переходе из режима выполнения в режим останова. Переход осуществляется при достижении точки останова или при пошаговом выполнении программы.

    Первой переменной в списке является специальная переменная модуля. Для модуля класса это определяемая системой переменная Me. Данная переменная принимает значение ссылки на текущий экземпляр класса, определенный в текущем модуле. Так как эта переменная является ссылкой на объект, то через нее могут быть выведены все свойства и данные, входящие в текущий экземпляр класса. Для стандартного модуля первым в списке отображается имя текущего модуля. Это имя используется для вывода списка всех переменных уровня модуля в текущем модуле. На окне локальных значений допускается изменение значения переменной, но параметры Expression (Выражение) и Type (Тип) изменять нельзя.

    Окно Watch (контрольных значений) позволяет следить за изменением значения выражения или переменной в ходе выполнения программы. Для того чтобы определить контрольное выражение, выберите в меню Debug (Отладка) команду Add Watch (Добавить контрольное значение). На экране появляется следующее окно:


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

    В строке Expression (Выражение) определяется переменная, свойство или выражение, за значением которого нужно проследить в процессе выполнения программы. Здесь также может располагаться вызов функции. Область Context (Контекст) определяет, где находится контролируемое выражение. Предназначена для тех случаев, когда есть одноименные переменные с разной областью видимости. Параметр Watch Type (Тип контрольного значения) определяет, как будет обрабатываться это контрольное выражение:

    Итак, нами изучены средства Microsoft Access 97, применяемые при отладке программ. Перейдем теперь к рассмотрению одного из алгоритмов, используемых при отладке программ. Это алгоритм локализации с точками останова.

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

  1. Выберите оператор, до которого, как Вы полагаете, программа будет выполняться правильно; установите в этом месте точку останова; выполните программу вплоть до этой точки.
  2. Просмотрите значения интересующих Вас переменных, чтобы убедиться в том, что программа работает правильно. Если это не так, перейдите к шагу 4; в противном случае удалите только что установленную Вами точку останова и установите новую точку останова, опять выбрав оператор, до которого, как Вам кажется, программа будет выполняться правильно.
  3. Запустите программу с только что удаленной Вами точки останова. Когда программа дойдет до следующей точки останова, вернитесь к шагу 2.
  4. Теперь Вы приблизительно знаете, где находится ошибка.

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

    На шаге 1 выберите несколько возможных точек останова; то же сделайте на шаге 2. Кроме того, на шаге 2 удалите все точки останова, до которых, по Вашему убеждению, программа не дойдет, когда Вы ее запустите на шаге 3. Далее следите не только за содержимым памяти (значениями переменных), но и за тем, на какую точку останова вышла программа, чтобы убедиться, что это есть запланированная в данном случае точка останова.

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

    Установите первую точку останова где-то в середине программы. Когда программа выполнится до этого места (если это произойдет), проверьте содержимое памяти, чтобы убедиться, что программа до этого места работала правильно. Если это так, то Вы будете знать, что Ваша первая ошибка находится во второй половине программы. В противном случае она в первой половине.

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

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

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

    На следующем шаге мы рассмотрим программную обработку ошибок.




Предыдущий шаг Содержание Следующий шаг