本日は実務でとても大切な不具合の発見方法について
通常のプログラマとして仕事をしておりますと、通常の実装よりは不具合時の調査のほうが難しいことが多々あります。
もちろんものによるんですが、経験のある人とない人でスピードがもろに違うだけにここら辺はスキルを言語化しておきたいところ。
といってもひとえにログの調査につきます。
バグの調査や修正ってある意味、探偵や刑事に近い技術が必要だと思うんですね。
刑事なんかでも現場百篇なんて言葉ありますが、プログラムのバグの場合、この現場に相当するのはソースとログになります。
異常な動作が起こっている場合、どこまで正常な動きが起こっているのか、いつから不具合が起きたのかは記録をみるのが一番早いです。
そのためにもログには必ずこまめに出力しておくようにしましょう。これないとプログラムの記録がないわけで、つまり「現場」の調査自体ができなくなります。
出しておきたい内容としては下記のような情報でしょうか。
時間
これ忘れることはあまりないかもしれないですが、ないと前後関係自体わからないので必ず出力しましょう。
プログラムの行数
事件が起こった時に調査するのはまずは時間と場所。場所はこの場合、プログラムの行数になります。どこで事件がおこっているのか。画面から想像がつくときもありますが、複雑なプログラムの場合、なかなか難しいこともあるでしょう。
エラー内容
if文などでエラーが起こった場合にはしっかりとエラー内容を書いておきましょう。プログラムなんて3日立てば内容を忘れていることが多いので、記録として残しておかないとあとで自分を苦しめることになります。
ステータス情報系
状態を表すような主要なパラメーターなどはログに吐き出しておくと、プログラムの動きが見えやすいでしょう。こまめに出力しておくとあとで自分を助けてくれます。
SQL
データはほぼ100%に近い確率でデータベースを使いますので、どんなSQLが吐かれたかはとても大事です。SQLはすべて出すぐらいの勢いで。
あとは容量にも気を付けておかないと肥大化したり、小さいとすぐにログの量自体がなくなってしまいます。
参考リンク