.scriptdebug(调试 JavaScript)
使用 .scriptdebug 命令调试 JavaScript 脚本。
.scriptdebug FileName
参数
FileName
指定要调试的调试器 JavaScript 脚本的名称。
环境
模式 |
全部 |
目标 |
全部 |
平台 |
全部 |
其他信息
有关 JavaScript 调试的概述,请参阅 JavaScript 调试器脚本 - JavaScript 调试。
注意
若要将 JavaScript 调试与 WinDbg 配合使用,请以管理员身份运行调试器。
注解
调试 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 : {...}
断点
使用以下断点命令来处理其他断点。
bp <bpid>:设置断点
bd <bpid>:禁用断点
be <bpid>:启用断点
bc <bpid>:清除断点
bpc:在当前行上设置断点
bl:列出断点
流控制 - 导航
使用以下命令在脚本中前进。
p:跳过
t:执行
g:继续脚本
gu:退出
帧
使用以下命令处理帧。
.frame <index>:切换到帧编号<索引>
.f+:切换到下一堆栈帧
.f+:切换到上一堆栈帧
退出
使用 .detach 命令分离 JavaScript 调试器。
>>> Debug [DebuggableSample 34:5] >.detach
.detach
Debugger has been detached from script!
使用 q 命令退出 JavaScript 调试器。
>>> Debug [<NONE> ] >q
q