.scriptdebug (JavaScript のデバッグ)
を使う .scriptdebug コマンドを使ってJavaScriptスクリプトをデバッグすることができる。
.scriptdebug FileName
パラメーター
FileName
デバッグするデバッガJavaScriptスクリプトの名前を指定します。
環境
モード |
すべて |
Targets |
すべて |
プラットフォーム |
すべて |
追加情報
JavaScriptデバッグの概要については、以下を参照 JavaScript Debugger Scripting - JavaScript Debugging.
Note
WinDbg で JavaScript デバッグを使用するには、管理者としてデバッガーを実行します。
解説
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>] >
と入力要求があれば、スクリプト・デバッガーの中にいることになる。
を使用する .ヘルプ コマンドまたは ? をクリックすると、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
Events
を使用する 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 スクリプト・デバッガ・コマンドを使用して、いずれかのブレーク動作を有効にします。 例えば、break on entryをオンにして、スクリプト内のコードが実行されるとすぐにスクリプト・デバッガにトラップするようにするには、次のコマンドを使う。
>>> 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: ステップアウト
フレーム
フレームを扱うには以下のコマンドを使用する。
.フレーム <インデックス>: フレーム番号に切り替える <インデックス>
.f+: 前のスタックフレームに切り替える
.f+: 前のスタックフレームに切り替える
やめる
を使用する .切り離す コマンドでJavaScriptデバッガーを切り離す。
>>> Debug [DebuggableSample 34:5] >.detach
.detach
Debugger has been detached from script!
を使用する q コマンドでJavaScriptデバッガーを終了します。
>>> Debug [<NONE> ] >q
q