.scriptdebug (отладка JavaScript)
Используйте команду .scriptdebug для отладки скриптов JavaScript.
.scriptdebug FileName
Параметры
FileName
Указывает имя скрипта JavaScript отладчика для отладки.
Среда
Режимы |
all |
Целевые объекты |
all |
Платформы |
all |
Дополнительная информация
Общие сведения об отладке JavaScript см. в статье "Скрипты отладчика JavaScript" — отладка JavaScript.
Примечание.
Чтобы использовать отладку JavaScript с WinDbg, запустите отладчик как Администратор istrator.
Замечания
Перед отладкой JavaScript выполните следующие действия.
Загрузите пример скрипта.
0:000> .scriptload C:\MyScripts\DebuggableSample.js
Чтобы начать активную отладку скрипта, используйте команду scriptdebug .
0:000> .scriptdebug C:\MyScripts\DebuggableSample.js
>>> ****** DEBUGGER ENTRY DebuggableSample ******
No active debug event!
>>> Debug [DebuggableSample <No Position>] >
Когда появится запрос >>> Debug [DebuggableSample <No Position>] >
и запрос на ввод, вы находитесь в отладчике скрипта.
Используйте команду .help или ? для отображения списка команд в среде отладки JavaScript.
>>> Debug [DebuggableSample <No Position>] >.help
Script Debugger Commands (*NOTE* IDs are **PER SCRIPT**):
? .................................. Get help
? <expr> .......................... Evaluate expression <expr> and display result
?? <expr> ......................... Evaluate expression <expr> and display result
| ................................. List available scripts
|<scriptid>s ...................... Switch context to the given script
bc \<bpid\> ......................... Clear breakpoint by specified \<bpid\>
bd \<bpid\> ......................... Disable breakpoint by specified \<bpid\>
be \<bpid\> ......................... Enable breakpoint by specified \<bpid\>
bl ................................ List breakpoints
bp <line>:<column> ................ Set breakpoint at the specified line and column
bp <function-name> ................ Set breakpoint at the (global) function specified by the given name
bpc ............................... Set breakpoint at current location
dv ................................ Display local variables of current frame
g ................................. Continue script
gu ............................... Step out
k ................................. Get stack trace
p ................................. Step over
q ................................. Exit script debugger (resume execution)
sx ................................ Display available events/exceptions to break on
sxe <event> ....................... Enable break on <event>
sxd <event> ....................... Disable break on <event>
t ................................. Step in
.attach <scriptId> ................ Attach debugger to the script specified by <scriptId>
.detach [<scriptId>] .............. Detach debugger from the script specified by <scriptId>
.frame <index> .................... Switch to frame number <index>
.f+ ............................... Switch to next stack frame
.f- ............................... Switch to previous stack frame
.help ............................. Get help
События
Используйте команду отладчика скрипта sx, чтобы просмотреть список событий, которые могут быть захвачены.
>>> Debug [DebuggableSample <No Position>] >sx
sx
ab [ inactive] .... Break on script abort
eh [ inactive] .... Break on any thrown exception
en [ inactive] .... Break on entry to the script
uh [ active] .... Break on unhandled exception
Используйте команду отладчика скрипта sxe, чтобы включить любое поведение останова. Например, чтобы включить разрыв для записи, чтобы скрипт заловился в отладчик скрипта, как только любой код в нем выполняется, используйте эту команду.
>>> Debug [DebuggableSample <No Position>] >sxe en
sxe en
Event filter 'en' is now active
Используйте команду отладчика скрипта sxd, чтобы отключить любое поведение точки останова.
>>> Debug [DebuggableSample 34:5] >sxd en
sxd en
Event filter 'en' is now inactive
Трассировка стека
Используйте команду k для отображения трассировки стека.
>>> Debug [DebuggableSample 34:5] >k
k
## Function Pos Source Snippet
-> [00] throwAndCatch 034:05 (var curProc = host.currentProcess)
[01] outer 066:05 (var foo = throwAndCatch())
[02] outermost 074:05 (var result = outer())
Перечисление переменных
Используйте ?? для перечисления значений переменных JavaScript.
>>> Debug [DebuggableSample 34:5] >??someObj
??someObj
someObj : {...}
__proto__ : {...}
a : 0x63
b : {...}
Точки останова
Используйте следующие команды точки останова для работы с дополнительными точками останова.
bpid<>: Установка точки останова
bd <bpid>: отключение точки останова
be <bpid>: Включить точку останова
bc <bpid>: очистка точки останова
bpc: установка точки останова в текущей строке
bl: вывод списка точек останова
Управление потоком — навигация
Используйте следующие команды, чтобы перейти вперед в скрипте.
p: шаг
t: шаг в
g. Продолжить скрипт
gu: выход
Кадров
Используйте следующие команды для работы с кадрами.
Индекс> .frame: переключение на индекс номера кадров <<>
.f+: переключение на следующий кадр стека
.f+: переключение на предыдущий кадр стека
Выход из программы
Используйте команду .detach для отсоединения отладчика JavaScript.
>>> Debug [DebuggableSample 34:5] >.detach
.detach
Debugger has been detached from script!
Используйте команду q, чтобы выйти из отладчика JavaScript.
>>> Debug [<NONE> ] >q
q