skillup

技術ブログ

プログラミング全般

調査スキルについて

投稿日:

本日は実務でとても大切な不具合の発見方法について

通常のプログラマとして仕事をしておりますと、通常の実装よりは不具合時の調査のほうが難しいことが多々あります。

もちろんものによるんですが、経験のある人とない人でスピードがもろに違うだけにここら辺はスキルを言語化しておきたいところ。

といってもひとえにログの調査につきます。

バグの調査や修正ってある意味、探偵や刑事に近い技術が必要だと思うんですね。

刑事なんかでも現場百篇なんて言葉ありますが、プログラムのバグの場合、この現場に相当するのはソースとログになります。

異常な動作が起こっている場合、どこまで正常な動きが起こっているのか、いつから不具合が起きたのかは記録をみるのが一番早いです。

そのためにもログには必ずこまめに出力しておくようにしましょう。これないとプログラムの記録がないわけで、つまり「現場」の調査自体ができなくなります。

出しておきたい内容としては下記のような情報でしょうか。

時間

これ忘れることはあまりないかもしれないですが、ないと前後関係自体わからないので必ず出力しましょう。

プログラムの行数

事件が起こった時に調査するのはまずは時間と場所。場所はこの場合、プログラムの行数になります。どこで事件がおこっているのか。画面から想像がつくときもありますが、複雑なプログラムの場合、なかなか難しいこともあるでしょう。

エラー内容

if文などでエラーが起こった場合にはしっかりとエラー内容を書いておきましょう。プログラムなんて3日立てば内容を忘れていることが多いので、記録として残しておかないとあとで自分を苦しめることになります。

ステータス情報系

状態を表すような主要なパラメーターなどはログに吐き出しておくと、プログラムの動きが見えやすいでしょう。こまめに出力しておくとあとで自分を助けてくれます。

SQL

データはほぼ100%に近い確率でデータベースを使いますので、どんなSQLが吐かれたかはとても大事です。SQLはすべて出すぐらいの勢いで。

あとは容量にも気を付けておかないと肥大化したり、小さいとすぐにログの量自体がなくなってしまいます。

参考リンク

http://blog.8bit.co.jp/?p=8815

 

-プログラミング全般

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

フレームワーク作成時の注意ポイント

以前も多分書いていますが、フレームワーク作成時のポイントなどを列挙。 次元が違うものも多々含まれているかも。 ルーティング機能 基本設定情報の読み込み キャッシュ機能 データベース Form情報の管理 …

no image

テストのダミーデータ作成

データベースに大量のデータを作りたいときにいつもあああやhoge,aaaですとデータという感じがしないですし、抽出や集計ができません。 なるべく自然に近いデータが欲しいのですが、簡単に作れる方法があり …

no image

バッチスクリプトで気をつけたい点

実務でバッチ処理を作る際に気をつけるべきと思ったこと。 基本的にエラーをいかに捉えていかにログに吐くかを最初に考える。まずはエラーありき。失敗するもの、想定した値がこない、あるいは値がないを前提として …

no image

オブジェクト指向 値オブジェクトの活用と場合分けに関して

オブジェクト指向 その1 オブジェクト指向 その2 オブジェクト指向 その3 でオブジェクト指向に触れたんですが、基本から勉強しなおす必要があると思い、まとめ&追記 参考文献 現場で役に立つシステム設 …

no image

リーダブルコードまとめ

リーダブルコードほぼ読み切ったのでまとめを。チェックリスト化して、常にこれを見ながらコードは書いたほうがよさげ 前半のまとめや参考リンクでみたものとマージします。 Contents1 変数の名称2 コ …