「エラーメッセージが出ないバグ」のデバッグ時の心得

2021/11/24 01:30

エラーメッセージの出ないバグに見舞われた際に考えるべきことや進め方を解説しました。プリントデバッグを入れるべき場所やその理由等を中心にお伝えしています。エラーメッセージの出ないバグに苦しんでいる方、ぜひ観てください。20分弱の動画です。

大事なこと

「どこまでがうまくいっていて」「どこがうまく動かないのか」を捉えていく。

  • 大きな塊で処理を捉えて、大雑把なあたりづけをしていく
  • 大きな単位から小さな単位へ絞り込んで追い詰める

エラーが出ていないコードのデバッグ

エラーが出ていればそのエラーに対応することがアクションとしては適切ですが、エラーが出ていない為、まず「どこの処理が想定した動作が違うのか」を探らなければなりません。

今回だと以下のように取捨選択をしています

  • エラー状況(optionタグが出力されない)に関連が深そうな処理をあたりづけする
  • イベントを仕掛けているところなど、表示に関係ない箇所は省く
  • その処理がうまくいかないならエラーが発生するはずだと思う場所は省く(エラーは出ていない為)

ログを出す場所

今回は処理が関数化されて、戻り値を変数に格納していることから処理の中間の途中段階のテキストを表示することを試みました。もしも関数化がなされていない場合においても、中心になりそうな変数に仕掛けて出してみるのは大事です。この時、なるべく処理の中間で入れられると絞り込みが効果的に行えるでしょう。

「この場所は必ず通る」と思えるところについて、本当に通っているかを確認すべく出力する。ただし、闇雲に入れても時間がかかるだけなので、主要な処理を見出してポイントを絞って入れると良いでしょう。

想定外の状態の箇所がわかったら

「その場所に入らないのはどういう状況か」と、推察することが大事です。今回はfor文の条件が間違えていないか?などと考えていくことが必要です。

この記事を書いた人

佐藤 正志

サークルアラウンド株式会社 代表取締役