プログラミング初心者歓迎!「エラーが出ました。どうすればいいですか?」から卒業するための基本と極意(ブログと動画まとめ)
デバッグ
プログラミング初心者歓迎!「エラーが出ました。どうすればいいですか?」から卒業するための基本と極意 \- YouTube(https://www.youtube.com/watch?v=5fyrGslhUcY) と プログラミング初心者歓迎!「エラーが出ました。どうすればいいですか?」から卒業するための基本と極意(解説動画付き) \- Qiita(https://qiita.com/jnchito/items/056325421b7e36f02335)
開発環境のエラーが出ている画面の赤く塗ってくれているところが多分エラーのところ
スタックトレース(バックトレース)とは?
スタックトレース \(stack trace\)とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典(https://wa3.i-3-i.info/word13281.html) 処理の呼び出し履歴。エラー発生までにどの関数(メソッド)をどこで呼び出したのかが分かる。
「エラーが発生するまでに、どんな処理を、どの順番で呼び出したか表現したもの」
テスト環境や本番環境だとこんな風には出ない!どうするか?rails sの方のlogを見る。
Full traceには自分の書いたコードだけでなくgemやフレームワークを含めての一連の動きを追える。下から上が呼び出された順。エラーは自分のコード以外で起こっていることもある。
Railsの場合、BetterErrors/better\_errors: Better error page for Rack apps(https://github.com/BetterErrors/better_errors)betgemを使うと便利で高機能なエラー画面が表示される。 3.0に対応していないかも?
エラーメッセージとエラータイプを「ちゃんと」読もう
場所 
app/controllers/books_controller.rb:67:in `set_book'
67line @book = Book.find(params:id)
どんな?
ActiveRecord::RecordNotFound in BooksController#show
Couldn't find Book with 'id'=1
エラーのタイプAPIドキュメント(https://api.rubyonrails.org/classes/ActiveRecord/RecordNotFound.html) を見る。
ターミナルのログでユーザーの動きを追いかける。
最後の方に、ActionController::RoutingError (No route matches GET "/book/1"):
そもそも画面が変わらないので /books/1をリクエストしてみたことによるエラー画面。
プログラムの実行順序やデータの中身を正確に把握しましょう。デバッグ
問題の起こるコードの直前に入れる。
puts
byebug(終わり方quit)
RubyMineの機能 (関連するgemがインストールできなかった)
better_errorsも
やみくもにデバックしない。仮説・検証・絞り込む
「質問する」もデバックの選択肢の一つ