Чтение онлайн

на главную - закладки

Жанры

Windows Script Host для Windows 2000/XP

Попов Андрей Викторович

Шрифт:
Листинг П3.2. WS-файл для отладки в Microsoft Script Debugger

<job id="Encoded">

 <?job debug="true"?>

 <runtime>

<description>

Имя: ForDebug.wsf

Описание: WS-файл для отладки в Microsoft Script Debugger

</description>

 </runtime>

 <script language="JScript">

 WScript.Echo("Это сообщение выведется до запуска отладчика");

 debugger;

 WScript.Echo("А это сообщение появится уже в отладчике");

 </script>

</job>

Так как значение атрибута

debug
равно
true
, то оператор
debugger
передаст управление отладчику, причем, в отличие от одиночного сценария, WS-файл можно запускать как с ключами
//D
или
//X
, так и без них.

Если же изменить в сценарии ForDebug.wsf инструкцию

<?job?>
следующим образом:

<?job debug="false"?>

то отладка будет отключена, причем независимо от использования ключей

//D
и
//X
при запуске сценария (это может понадобиться при эксплуатировании в рабочем режиме WS-файла, содержащего операторы
debug
или
Stop
).

Команды отладчика

Команды, имеющиеся в Microsoft Script Debugger, позволяют выполнять трассировку сценариев, просматривать список вызванных процедур или функций, анализировать и изменять значения переменных.

Установка и удаление точек прерывания

Для того чтобы установить точку прерывания в определенной строке сценария, нужно поместить курсор в эту строку и нажать <F9> или выбрать пункт меню Debug|Toggle Breakpoint. Строки с точками прерывания будут отмечены красными точками около левой границы окна отладчика. При достижении точки прерывания отладчик останавливает исполнение сценария.

Для удаления одной точки прерывания необходимо поместить курсор в нужную строку и вновь нажать <F9> или выбрать пункт меню Debug|Toggle Breakpoint. Если нужно убрать все точки прерывания, то можно воспользоваться командой меню Debug|Clear All Breakpoints.

Выполнение сценария

Открытый в отладчике сценарий может выполняться в разных режимах с помощью соответствующих команд меню Debug.

С помощью команды Debug|Run (или нажатия клавиши <F5) можно выполнить все операторы сценария до первой точки прерывания.

Для того чтобы выполнить только один оператор (режим пошагового выполнения), нужно выбрать команду Debug|Step Into или нажать <F8>. Следующий исполняемый оператор при этом будет помечен стрелкой около левой границы окна отладчика.

Если в режиме пошагового выполнения в сценарии встречается вызов определенной пользователем процедуры/функции, то возможны два варианта. Продолжая выполнять команду 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
дано указание ожидать завершение процесса, которое из сценария определить нельзя
Поделиться:
Популярные книги

Точка Бифуркации IX

Смит Дейлор
9. ТБ
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Точка Бифуркации IX

Чужак из ниоткуда 5

Евтушенко Алексей Анатольевич
5. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
фантастика: прочее
фэнтези
5.00
рейтинг книги
Чужак из ниоткуда 5

Второгодка. Книга 2. Око за око

Ромов Дмитрий
2. Второгодка
Фантастика:
героическая фантастика
альтернативная история
фэнтези
5.00
рейтинг книги
Второгодка. Книга 2. Око за око

Отморозок 5

Поповский Андрей Владимирович
5. Отморозок
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Отморозок 5

Сердце Дракона. нейросеть в мире боевых искусств (главы 1-650)

Клеванский Кирилл Сергеевич
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.51
рейтинг книги
Сердце Дракона. нейросеть в мире боевых искусств (главы 1-650)

Черный Маг Императора 13

Герда Александр
13. Черный маг императора
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 13

Кодекс Охотника. Книга ХХ

Винокуров Юрий
20. Кодекс Охотника
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга ХХ

Точка Бифуркации III

Смит Дейлор
3. ТБ
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Точка Бифуркации III

В лапах зверя

Зайцева Мария
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
В лапах зверя

Афганский рубеж 3

Дорин Михаил
3. Рубеж
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Афганский рубеж 3

Наследник павшего дома. Том I

Вайс Александр
1. Расколотый мир
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник павшего дома. Том I

Барон переписывает правила

Ренгач Евгений
10. Закон сильного
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Барон переписывает правила

Имя нам Легион. Том 1

Дорничев Дмитрий
1. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 1

Седина в бороду, Босс… вразнос!

Трофимова Любовь
Юмор:
юмористическая проза
5.00
рейтинг книги
Седина в бороду, Босс… вразнос!