Поделиться через


.scriptdebug (отладка JavaScript)

Используйте команду .scriptdebug для отладки скриптов JavaScript.

.scriptdebug FileName

Параметры

FileName

Указывает имя скрипта JavaScript отладчика для отладки.

Среда

Режимы

all

Целевые объекты

all

Платформы

all

Дополнительная информация

Общие сведения об отладке JavaScript см. в статье "Скрипты отладчика JavaScript" — отладка JavaScript.

Примечание.

Чтобы использовать отладку JavaScript с WinDbg, запустите отладчик как Администратор istrator.

Замечания

Перед отладкой JavaScript выполните следующие действия.

  1. Загрузите пример скрипта.

    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