Если в режиме пошагового выполнения в сценарии встречается вызов определенной пользователем процедуры/функции, то возможны два варианта. Продолжая выполнять команду Debug|Step Into, мы будем останавливаться на каждом операторе внутри процедуры/функции. Для того чтобы, находясь внутри процедуры/функции, не проходить оставшиеся операторы по отдельности, можно выполнить команду Debug|Step Out (или нажать <Ctrl>+<Shift>+<F8>). После этого управление передастся оператору, который стоит в сценарии первым после вызова этой процедуры/функции.
Если нет необходимости проверять внутреннюю работу процедуры/функции пользователя, то нужно выбрать команду Debug|Step Over или нажать комбинацию клавиш <Shift>+<F8>. При этом данная процедура/функция выполнится без остановок и исполнение сценария остановится на следующем после нее операторе.
Команда 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 набрать имя этой переменной и нажать <Enter>. Например, для того, чтобы увидеть значение переменной s в сценарии ForDebug.js, мы в окне Command вводим s и нажимаем <Enter> (рис. П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 <name> could not be removed Вызов метода Environment.Remove для несуществующей переменной среды Invalid attempt to call Exec without a command Вызов метода WshShell.Exec() без указания аргумента (команды для выполнения) Invalid shortcut path name Попытка создать ярлык с неправильным расширением файла (расширение должно быть lnk или url) Printer <name> not found Неправильно указано имя принтера при вызове метода SetDefaultPrinter Protocol handler for <name> could not be found Попытка установить ярлык на сетевой ресурс, использующий некорректно зарегистрированный обработчик протокола Registry key <name> contains invalid root Вызов метода RegRead или RegWrite для некорректного ключа реестра Registry key <name> could not be opened Вызов метода RegRead для несуществующего ключа реестра Registry key <name> could not be removed Вызов метода RegDelete для несуществующего ключа реестра Remote script object can only be executed once Попытка повторно запустить объект — удаленный сценарий Shortcut <name> contains invalid syntax Сохранение ярлыка на сетевой ресурс, имеющий некорректный URL Shortcut <name> could not be saved Попытка сохранить новый ярлык в файле, который уже существует и имеет атрибут "Только для чтения" Shortcut <name> failed to execute protocol handler Попытка установить ярлык на сетевой ресурс, использующий несуществующий обработчик протокола Unable to execute remote script Невозможно создать процесс — удаленный сценарий Unable to find job <job identifier> В WS-файле нет задания с идентификатором <job identifier> Unable to wait for process С помощью метода Run дано указание ожидать завершение процесса, которое из сценария определить нельзя