.scriptdebug (Depurar JavaScript)
Use o comando .scriptdebug para depurar scripts JavaScript.
.scriptdebug FileName
Parâmetros
FileName
Especifica o nome do script JavaScript do depurador a ser depurado.
Ambiente
Modos |
all |
Destinos |
all |
Plataformas |
all |
Informações Adicionais
Para obter uma visão geral da depuração JavaScript, confira Script do Depurador JavaScript - Depuração JavaScript.
Observação
Para usar a depuração JavaScript com WinDbg, execute o depurador como Administrador.
Comentários
Antes de depurar um JavaScript, conclua as etapas a seguir.
Carregue o script de exemplo.
0:000> .scriptload C:\MyScripts\DebuggableSample.js
Para iniciar a depuração ativa do script, use o comando .scriptdebug.
0:000> .scriptdebug C:\MyScripts\DebuggableSample.js
>>> ****** DEBUGGER ENTRY DebuggableSample ******
No active debug event!
>>> Debug [DebuggableSample <No Position>] >
Depois de ver o prompt >>> Debug [DebuggableSample <No Position>] >
e uma solicitação de entrada, você estará dentro do depurador de script.
Use o comando .help ou ? para exibir uma lista de comandos no ambiente de depuração 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
Eventos
Use o comando do depurador de script sx para ver a lista de eventos que podem ser interceptados.
>>> 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
Use o comando do depurador de script sxe para habilitar qualquer um dos comportamentos de interrupção. Por exemplo, para ativar a interrupção na entrada para que o script intercepte no depurador de script assim que qualquer código dentro dele for executado, use esse comando.
>>> Debug [DebuggableSample <No Position>] >sxe en
sxe en
Event filter 'en' is now active
Use o comando do depurador de script sxd para desabilitar qualquer um dos comportamentos de ponto de interrupção.
>>> Debug [DebuggableSample 34:5] >sxd en
sxd en
Event filter 'en' is now inactive
Rastreamento de pilha
Use o comando k para exibir um rastreamento de pilha.
>>> 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())
Enumerando variáveis
Use ?? para enumerar os valores das variáveis JavaScript.
>>> Debug [DebuggableSample 34:5] >??someObj
??someObj
someObj : {...}
__proto__ : {...}
a : 0x63
b : {...}
Pontos de interrupção
Use os comandos de ponto de interrupção a seguir para trabalhar com pontos de interrupção adicionais.
bp <bpid>: Definir um ponto de interrupção
bd <bpid>: Desabilitar o ponto de interrupção
be <bpid>: Habilitar o ponto de interrupção
bc <bpid>: Limpar o ponto de interrupção
bpc: Definir ponto de interrupção na linha atual
bl: Listar os pontos de interrupção
Controle de fluxo - navegação
Use os comandos a seguir para avançar no script.
p: Passo a passo
t: Passo para dentro
g: Continuar script
gu: Passo para fora
Quadros
Use os comandos a seguir para trabalhar com quadros.
.frame <index>: Alternar para o <index> do número do quadro
.f+: Alternar para o próximo quadro de pilha
.f+: Alternar para o quadro de pilha anterior
Encerrando
Use o comando .detach para desanexar o depurador JavaScript.
>>> Debug [DebuggableSample 34:5] >.detach
.detach
Debugger has been detached from script!
Use o comando q para sair do depurador JavaScript.
>>> Debug [<NONE> ] >q
q