JavaScriptの処理が思うようにいかない時、エラーに対して一つ一つをconsole.log
で調べていたらあっと言う間に時間を溶かしてしまいます。
今回は自身の学習として、GoogleのToolsドキュメントを参考にデバッグをやってみました。
バグの再現
参考動画と同じ環境を用意します。
command(⌘) + option(⌥) + i
でDevToolを開いてソースコードを確認します。
Sources
の中から、JavaScriptファイルを確認。
現時点では、1 + 1 = 11 でバグってます。
今回は、クリックを起点に発火するイベントなので、Event Listener Breakpoints
のclick
を選択した状態でcommand(⌘) + R
でページを更新します。
するとクリックで起動するfunctionがハイライトされ、一行ずつ実行しながら確かめることができるようになります。
Step over next function call
を押すと、一行ずつ順番にコードを実行できます。
ブレークポイントの活用
フレーム内の行数をクリックすると、ブレークポイントが設定できます。ブレークポイントを設定した状態で実行すると、代入された変数の値や、演算処理の結果をconsole.log
を使わずに見ることができます。
上記の例の場合、この結果からappend1
とappend2
に代入された値が文字列型になっていることがバグの原因とわかります。
Scope
スコープ内の状態はScope
を確認します。Scope
には、実行コンテキストの情報がある場合のみ表示されます。
Watch Expressions
Watch Expressions
は、+
をクリックしてjavascriptを入力することで任意の情報を取得できます。
int型であるべき値が、String型になっていることが確認できます。
修正
Dev Tools上でバグを確認したら、そのまま修正・実行を行うことができます。
-
Resume script execution
をクリックします。 -
Code Editor
上で該当箇所を修正します。 -
command(⌘) + s で保存します。
-
Deactivate breakpoints
をクリックします。