デバッグ手法について。
デバッグ手法について。
ある程度の規模のシステムになるとログを出力する仕組みが備わっているのが一般的ですが、不具合が起こった場合にログから原因を特定するためのテクニックを紹介したいと思います。
当たり前のことですが、エラー情報が出力されていないか確認してみましょう。
ただ、エラーログだからといっても、そのログに本当に有益な情報が隠されているかどうかは分かりません。
大量のログが吐き出されている場合は、エラーログだけを抜き出して原因となっていそうな部分の目星を付けるのもいいかと思います。
単純にエラーログを見ただけでは原因を特定できないことも多々あります。
このような場合は正常系のログと比較してみましょう。
正常系でも出力されているエラーログであれば、それは不具合の原因ではない可能性が高いと言えます。
逆に、異常系でしか出力されていないのであれば、それが問題解決の糸口になるかも知れません。
「ログの終わり方なんて見てどうするの?」という方もいるかも知れませんが、ここにも重要な情報が潜んでいる可能性があります。
例えばシステムクラッシュなどでフリーズやリブートしてしまうようなバグがあった場合は、何処まで処理が進んでいるかを確認することが出来ます。
複数のログを比較して、毎回違うところで終わっているなら、それはランダムで発生する事象を起因とした不具合である可能性が高いと言えます。
ランダムで発生する事象で思い付くもの…何でしょう…。
割り込みのような外部要因によって呼び出される処理なんかを疑ってみるといいかも…?
ログの中には、ある程度規則性をもって出力されているものも存在します。
例えば、システムやモジュールの初期化処理、タイマ処理などのログがそれに該当します。
これらのログが途中で途切れていたりスキップされていた場合は、そこに問題が隠れている可能性が考えられます。