Альтернатива точкам останова: оператор Stop
Альтернатива точкам останова: оператор Stop
Точки останова использовать очень просто, но они имеют один недостаток: они временны. Если отлаживаемая программа достаточно сложна, скорее всего, вам не удастся привести ее в полный порядок за один раз. Точки останова не сохраняются в программном коде, поэтому, открыв проект в редакторе Visual Basic в следующий раз, вы их уже не увидите.
Эта проблема решается с помощью оператора Stop. Поместите этот оператор в программный код. и в соответствующем месте программа перейдет в режим паузы. Вместе с другими операторами программы операторы Stop будут сохраняться при сохранении проекта.
Желаете пример, господа? Извольте:
* * *
intДанныеCMapca = ПолучениеДанныхСМарса(1.5454)
Stop
MsgBox "Результат " & intДанныеCMapca /Z
* * *
Взглянув на этот пример, вы можете догадаться, что здесь оператор Stop используется для того, чтобы прозондировать подозрительные результаты, отображаемые в окне сообщения. Выполнение оператора Stop заставит перейти программу в режим паузы сразу после того, как процедура-функция ПолучениеДанныхСМарса присвоит свое значение переменной. Вы получите возможность проверить значения обеих переменных, используемых для вычислений в следующей за оператором Stop строке, чтобы выяснить, какая из переменных стала источником проблемы.
Когда вы достаточно насладитесь режимом паузы (по крайней мере на этот раз), дайте указание VBA продолжить нормальное выполнение программы. Для этого используются команды, находящиеся на тех же местах, что и команды для первоначального запуска программы. В режиме паузы соответствующие пункт меню Run (Выполнить) и кнопка панели инструментов со своих мест никуда не денутся, но изменят свои названия - они будут теперь называться Continue (Продолжить). По-прежнему клавишным эквивалентом для вызова соответствующей команды будет <F5>. Продолжая выполнение, программа может снова перейти в режим паузы, если доберется до следующей точки останова или возникнут иные условия, при которых активизируется режим паузы.
Чтобы совсем прекратить выполнение программы, используйте команду Reset
(Остановить выполнение). Для этого можно использовать кнопку Reset или пункт Reset меню
Run. Нажатие <A!t+F4> останавливает выполнение вообще любой программы в Windows, в том числе и VBA-программ. Но прежде чем нажать <Alt+F4>, убедитесь, что вы выполняете свою
VB А-программу, потому что в противном случае закроется либо редактор Visual Basic, либо ваше
VBA-приложение, либо какая-то другая программа Windows, оказавшаяся активной в тот момент.
Как и все хорошие отладчики, редактор Visual Basic дает возможность выполнять программу по шагам, по одному оператору за шаг. Такое замедление- просто находка для тех случаев, когда появляется подозрение на наличие логических ошибок, имеющих привычку прятаться в укромных местах программ.
Чтобы использовать все преимущества пошагового выполнения программы, желательно видеть, как в процессе выполнения программы изменяются значения переменных. В этом всегда готово помочь чудесное средство редактора Visual Basic, называемое Auto Data Tips (Автоматические подсказки значений), но еще более подробная информация предоставляется в окнах Locals (Окно локальных переменных) и Watches (Окно контролируемых выражений), которые к тому же позволяют при необходимости изменить значения представленных в них элементов. Все эти возможности будут обсуждаться ниже.
Начнем же, пожалуй, стрех команд Step редактора Visual Basic, а именно: Step Into.
Step Over и Step Out. Все три доступны либо через меню Debug, либо с помощью кнопок панели инструментов Debug, либо следующих комбинаций клавиш.
Step Into <F8>
Step Over <Shift+F8>
Step Out <Ctrl+Shift+F8>
Команда Step Into (Войти в процедуру) используется, если нужно выполнить процедуру по шагам в порядке естественного выполнения операторов. Каждый раз, когда применяется эта команда, VBA выполняет следующий оператор программы и снова переходит в режим паузы, чтобы вы имели возможность увидеть произошедшие при этом изменения. Удобнее всего вызывать команду Step Into нажатием клавиши <F8>.
Свое название эта команда получила из-за того, что при ее использовании происходит вход в любую из вызываемых в программе процедур: если следующим оператором оказывается вызов процедуры типа Sub или Function, то применение команды Step Into приведет к открытию вызванной процедуры в окне редактирования, чтобы вы могли пройти эту процедуру по шагам и увидеть все, что происходит.
Команда Step Into доступна не только в режиме паузы. Если нужно выполнить программу по шагам с самого начала, запустите ее с помощью команды
Step Into. В таком случае команда Step Into начинает выполнение с той процедуры, в которой оказывается текстовый курсор, причем процедура всегда выполняется с самой первой строки.
Команда Step Over (Обойти процедуру) вызывается клавишами <Shift+F8> и работает подобно команде Step Into, но со следующими двумя отличиями:
* при вызове процедуры команда Step Over не приводит к пошаговому выполнению вызываемой процедуры;
* с помощью команды Step Over нельзя начать выполнение программы в режиме паузы.
Если оператор, который должен выполняться следующим, вызывает некоторую процедуру, команда Step Over выполнит эту процедуру без перерывов, целиком, сделав сразу все имеющиеся в процедуре глупости и не дав вам проверить промежуточные результаты. Обход процедур очень экономит время, когда вы уверены, что вызываемая процедура работает так, как нужно.
Команда Step Out (Выйти из процедуры) вызывается клавишами <Ctrl+Shift+F8> и прекрасно дополняет команду Step Over. После входа в процедуру в режиме ее пошагового выполнения вы можете решить, что все в порядке или что ошибка найдена и исправлена.
Или, намереваясь щелкнуть на кнопке Step Over, вы можете случайно щелкнуть на кнопке Step Into лично у меня такое происходит регулярно).
В любом из таких случаев нет необходимости проходить по шагам оставшуюся часть процедуры. Чтобы пройти остаток с полной скоростью, используйте команду Step Out.
VBA быстро доставит вас в ту процедуру, из которой вы пришли, подсветив оператор, следующий за оператором с вызовом процедуры.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Stop - Остановка
Stop - Остановка Stop(Глобальная функция)Производит остановку фильма на текущем кадреСинтаксис:Stop()Описание:Функция Stop() останавливает воспроизведение фильма или клипа. Это глобальный аналог метода MovieClip.stop(). Она часто используется для ожидания, когда пользователь, например,
Stop - Остановить воспроизведение фильма на текущем кадре
Stop - Остановить воспроизведение фильма на текущем кадре Stop(Глобальная функция)Производит остановку фильма на текущем кадреСинтаксис:Stop()Описание:Функция Stop() останавливает воспроизведение фильма или клипа. Это глобальный аналог метода MovieClip.stop(). Она часто используется
2.1.1. Альтернатива (условный оператор)
2.1.1. Альтернатива (условный оператор) Пример 1.1: Вычисление значений функции Y=1/X.Если X ? 0то писать (1/X)иначе писать (‘0 не входит в область определения функции Y=1/X’);IF X <> 0THEN WRITE (1/X)ELSE WRITE (‘0 не входит в область определения функции Y=1/X’);IF – если.THEN – то.ELSE –
2.1.1. Альтернатива (условный оператор)
2.1.1. Альтернатива (условный оператор) Пример 2.1: Вычисление значений функции Y=1/X.#include <stdio. h>int main (){float x;printf (“Введите число ”);scanf (”%f”, &x);if (x!= 0) printf (“Y=1/X=%f ”, 1/x); else printf (“0 не входит в область определения функции
F-Stop (Числа диафрагмы)
F-Stop (Числа диафрагмы) Одна из главных настроек настоящей камеры – апертура (Aperture). Апертурой называют величину отверстия в камере, через которое свет проникает на пленку или светочувствительный датчик. Многие камеры позволяют регулировать количество света, проникающего
Размещение точек останова в программе
Размещение точек останова в программе Если есть подозрение, что ошибка содержится в каком-то конкретном сегменте программного кода, поместите точку останова как раз перед этим сегментом. На рис. 9.3 видно, как редактор Visual Basic представляет точку останова на экране - в виде
Удаление точек останова
Удаление точек останова Исправив ошибки в программном коде или отказавшись на время от попыток их исправления, вы захотите удалить ненужные точки останова. Удаление точек останова даст возможность VBA при следующем запуске выполнять программу без лишних задержек.
Использование контролируемых выражений для назначения точек останова
Использование контролируемых выражений для назначения точек останова По мере увеличения размеров программы становится все труднее следить за изменениями значений переменных различными операторами и процедурами. Иногда вы видите, что в конечном итоге значение
Правило 52: Если вы написали оператор new с размещением, напишите и соответствующий оператор delete
Правило 52: Если вы написали оператор new с размещением, напишите и соответствующий оператор delete Операторы new и delete с размещением встречаются в C++ не слишком часто, поэтому в том, что вы с ними не знакомы, нет ничего страшного. Вспомните (правила 16 и 17), что когда вы пишете такое
Stop!
Stop! Производитель: Proantivirus Lab (http://www.proantivirus.com/ru/).Статус: коммерческая.Страница для скачивания: http://www.proantivirus.com/ru/download/.Размер: 7 Мбайт.Быть объективными в оценке современного антивируса очень сложно. Как правило, главными критериями оценки антивирусного пакета являются
Пример. Привязка к конечным точкам примитивов
Пример. Привязка к конечным точкам примитивов Постройте отрезки, нарисованные пунктирной линией, задавая их точки с объектной привязкой к конечным точкам объектов (рис. 6.2).Запустите команду формирования отрезка LINE, вызвав ее из падающего меню Draw ? Line или щелкнув на
Пример. Привязка к средним точкам примитивов
Пример. Привязка к средним точкам примитивов Постройте отрезок, изображенный пунктирной линией, задавая его точки с объектной привязкой к средним точкам объектов (рис. 6.3).Запустите команду формирования отрезка LINE, вызвав ее из падающего меню Draw ? Line или щелкнув на
Пример. Привязка к точкам пересечения примитивов
Пример. Привязка к точкам пересечения примитивов Постройте отрезок, нарисованный пунктирной линией, задавая его точки с объектной привязкой к точкам пересечения объектов (рис. 6.4).Запустите команду формирования отрезка LINE, вызвав ее из падающего меню Draw ? Line или щелкнув
Пример. Построение дуги по трем точкам
Пример. Построение дуги по трем точкам Постройте дугу по варианту 3 Points – рис. 8.2.Запустите команду ARC, вызвав ее из падающего меню Draw ? Arc ? 3 Points или щелкнув на пиктограмме Arc на панели инструментов Draw. Ответьте на запросы:_ARCSpecify start point of arc or [Center]: 50,80 – точка 1Specify second point of arc or
Пример. Построение окружности по двум точкам диаметра
Пример. Построение окружности по двум точкам диаметра Постройте окружность по двум точкам диаметра (рис. 8.5).Запустите команду CIRCLE, вызвав ее из падающего меню Draw ? Circle ? 2 Points или щелкнув на пиктограмме Circle на панели инструментов Draw. Ответьте на запросы:_CIRCLESpecify center point for circle
28.6. Другие методы, применяемые для запуска и останова служб
28.6. Другие методы, применяемые для запуска и останова служб Если вы не желаете применять файл /etc/inittab, существует другая возможность запустить службу. Большая часть систем включает файл rc.local, который помещается в каталоге /etc либо рядом с ним. Этот файл сценария