Установка и удаление точек прерывания
Для того чтобы установить точку прерывания в определенной строке сценария, нужно поместить курсор в эту строку и нажать или выбрать пункт меню Debug|Toggle Breakpoint. Строки с точками прерывания будут отмечены красными точками около левой границы окна отладчика. При достижении точки прерывания отладчик останавливает исполнение сценария.
Для удаления одной точки прерывания необходимо поместить курсор в нужную строку и вновь нажать или выбрать пункт меню Debug|Toggle Breakpoint. Если нужно убрать все точки прерывания, то можно воспользоваться командой меню Debug|Clear All Breakpoints.
Открытый в отладчике сценарий может выполняться в разных режимах с помощью соответствующих команд меню Debug.
С помощью команды Debug|Run(или нажатия клавиши
Для того чтобы выполнить только один оператор (режим пошагового выполнения), нужно выбрать команду Debug|Step Intoили нажать . Следующий исполняемый оператор при этом будет помечен стрелкой около левой границы окна отладчика.
Если в режиме пошагового выполнения в сценарии встречается вызов определенной пользователем процедуры/функции, то возможны два варианта. Продолжая выполнять команду Debug|Step Into, мы будем останавливаться на каждом операторе внутри процедуры/функции. Для того чтобы, находясь внутри процедуры/функции, не проходить оставшиеся операторы по отдельности, можно выполнить команду Debug|Step Out(или нажать ++). После этого управление передастся оператору, который стоит в сценарии первым после вызова этой процедуры/функции.
Если нет необходимости проверять внутреннюю работу процедуры/функции пользователя, то нужно выбрать команду Debug|Step Overили нажать комбинацию клавиш +. При этом данная процедура/функция выполнится без остановок и исполнение сценария остановится на следующем после нее операторе.
Команда Debug|Stop Debuggingпрерывает исполнение сценария и завершает процесс отладки.
В отладчике можно вывести окно Call Stack со списком всех активных процедур и функций сценария. Для этого нужно выполнить команду View|Call Stack. Например, если вызвать это окно, находясь внутри функции MyFunc()в сценарии ForDebug.js, то в списке мы увидим название функции MyFunc()(рис. П3.29).
Рис. П3.29.Окно Call Stack
Просмотр и изменение значений переменных
Получать и изменять текущие значения переменных или свойств объектов во время остановки исполнения сценария позволяет окно Command, которое вызывается командой View|Command Window. При этом анализ переменных в JScript- и VBScript-сценариях производится следующим образом.
Для просмотра значения переменной в JScript-сценарии нужно в окне Commandнабрать имя этой переменной и нажать . Например, для того, чтобы увидеть значение переменной sв сценарии ForDebug.js, мы в окне Command вводим sи нажимаем (рис. П3.30).
Чтобы вывести значение переменной в VBScript-сценарии, нужно в окне Command ввести имя этой переменной и поставить перед ним знак ?. Например,
? s
Рис. П3.30.Просмотр значений переменных в окне
Для изменения значения переменной нужно просто присвоить новое значение этой переменной в окне Command(это относится и к JScript- и к VBScript-сценариям). Например,
s="Новое значение переменной s"
Приложение 4
Ошибки выполнения сценариев в WSH
Ошибки, которые могут возникнуть при выполнении сценариев WSH, вместе с описанием возможных причин их появления, приведены в табл. П4.1.
Таблица П4.1.Ошибки WSH 5.6
| Сообщение об ошибке |
Причина |
| A duplicate name for a named or unnamed element was encountered: xxx |
Попытка повторного использования имени аргумента |
| Argument list too long |
Связано с запуском сценария при помощи технологии Drag-and-Drop: на файл сценария "опущено" слишком много параметров — имен файлов |
| Cannot write to wsh.log |
При вызове метода LogEventв Windows 9х или Windows ME файл %windir%\wsh.log оказался заблокированным для записи |
| Can't save settings |
Ошибка при сохранении файла с настройками сценария (*.wsh) |
| Environment variable could not be removed |
Вызов метода Environment.Removeдля несуществующей переменной среды |
| Invalid attempt to call Exec without a command |
Вызов метода WshShell.Exec()без указания аргумента (команды для выполнения) |
| Invalid shortcut path name |
Попытка создать ярлык с неправильным расширением файла (расширение должно быть lnk или url) |
| Printer not found |
Неправильно указано имя принтера при вызове метода SetDefaultPrinter |
| Protocol handler for could not be found |
Попытка установить ярлык на сетевой ресурс, использующий некорректно зарегистрированный обработчик протокола |
| Registry key contains invalid root |
Вызов метода RegReadили RegWriteдля некорректного ключа реестра |
| Registry key could not be opened |
Вызов метода RegReadдля несуществующего ключа реестра |
| Registry key could not be removed |
Вызов метода RegDeleteдля несуществующего ключа реестра |
| Remote script object can only be executed once |
Попытка повторно запустить объект — удаленный сценарий |
| Shortcut contains invalid syntax |
Сохранение ярлыка на сетевой ресурс, имеющий некорректный URL |
| Shortcut could not be saved |
Попытка сохранить новый ярлык в файле, который уже существует и имеет атрибут "Только для чтения" |
| Shortcut failed to execute protocol handler |
Попытка установить ярлык на сетевой ресурс, использующий несуществующий обработчик протокола |
| Unable to execute remote script |
Невозможно создать процесс — удаленный сценарий |
| Unable to find job |
В WS-файле нет задания с идентификатором |
| Unable to wait for process |
С помощью метода Runдано указание ожидать завершение процесса, которое из сценария определить нельзя |
Читать дальше