身近で何人か見た例を整理してみる(誰か1人の話ではないです)
- エラーメッセージ自体は読む
- エラーメッセージでググったりする
- エラーメッセージから発生箇所を推定できない
- 例えば
JSのcannot read property 'xxxx' of undefined
Rubyのundefined method 'xxxx' for nil:NilClass
- xxxxを呼んでる箇所が怪しいと気づかない
- ブレークポイントを置いてデバッグしないこともない
- 渡ってきているパラメータを疑わない
- スタックトレースを見ない
- DevツールのNetworkタブを見ない
うーん、あんまり抽象化できないな。デバッグできない人がデバッグできるようになるために何をしたらいいかを言語化したいです。
僕がやるのは、
- 前提
- 怪しい箇所を二分探索で絞り込んでいく
- 方法
- ログを置く(
console.log
,Rails.logger
) - ブレークポイントを置く(
debugger
,binding.pry
) - フロントエンドの場合はNetworkタブを見る
- ログを置く(
- 見る箇所
- オブジェクトの状態が想定通りかを見る
- 受け取った引数やパラメータが想定通りかを見る
- 渡す引数やパラメータを見る
怪しい箇所の絞り込みが大事です。少しずつ狭めていくとおのずと原因がわかってくるものだし、デバッグはいずれ勝てる勝負なので根気よく攻めていくのが大事じゃなかろうかと。慣れたらアタリをつけられるようになりますが。
デバッグ苦手な人はエラーが出た→色々調べる、みたいになりがちなのでは?と思いました。