デバッグの勘所

  • JS はどうやっても JS である
    • なので、絶対ブラウザに読み込まれているし、ブラウザが解読可能な形式でしか読み込まれない
    • 仕掛ける場所さえ間違えなければ、ブレークポイントを仕掛けることはできるはず
  • 基本的には console.log , console.debug を使ってデバッグ

ブレークポイント・ステップ実行

  • ブラウザに搭載されている Developer tools を積極的に使う
  • Developer Tools を使うことで現在読み込んでいる JS が確認できる
    • Chrome は Sources タブ
    • Firefox は デバッガータブ
  • 読み込んでいる JS が確認できれば、デバッガでブレークポイント仕掛けることができる
  • デバッグしたい JS が minify されているか確認する
    • minify されていたら Source Map があるか確認する
    • または minify されていたら、 {} というボタンがあるはずなので、そこで minify を整形するという方法もある
    • それでも分かりづらかったら、自前で minify されないようにビルドをしてビルドの成果物を 自身のプロダクトに import するように修正する

DOM に仕掛けられたイベントリスナを確認する方法

  • Chrome であれば Styles と同じところにある「Event Listener」辺りを見る
    • または Properties タブで該当エレメントを見て onChange onClick 辺りを見たりする
  • Firefox の場合は、DOM にイベントが仕掛けられている場合、インスペクターの中の DOM の横に「ev」とアイコンがでているので、そこでわかる
    • firefox_event_listener.png

他ライブラリ(Angular, React etc ...)のデバッグ方法

  • Angular の場合は ng.probe($0).componentInstance, 他に拡張機能 Augury external_link を使う
  • React + Firefox の場合は React developer tools
  • VSCode を使っているなら、デバッグモード起動機能がある(.vscode/launch.json で設定)

こちらもおすすめ

イベント関連のデバッグ手順のサンプル

  • chrome-debug.gif