Hatena::ブログ(Diary)

ジャンク☆ニュース 臥龍 このページをアンテナに追加 RSSフィード

2008-12-06

ひなた先生が教えるデバッグが256倍速くなるテクニック ひなた先生が教えるデバッグが256倍速くなるテクニックを含むブックマーク ひなた先生が教えるデバッグが256倍速くなるテクニックのブックマークコメント

ひなた先生が教えるデバッグが256倍速くなるテクニック (Software Design Books)

ひなた先生が教えるデバッグが256倍速くなるテクニック (Software Design Books)

某所で教えてもらった。

確かにデバッグプログラムの20倍くらい難しい。


定石はあるのだが、中々言葉では伝えにくい。

例えば再現性100%ならロジック系の間違い。操作に関係なく一定の比率でランダムに起こるなら割り込み系を疑う。


まず、再現させて再現率を調べる。(再現率は後々、対策されたかどうかの目安にもなる)

100%再現なら間違いなく直せる。

ログを出すなりデバッガー・ICEを使うなりで素直にロジックを追いかけていけばいい。

数十回に1回程度なら何とか、発生した時と発生しない時の状態を比較することで解析できる。

再現しないものが一番難しい。


メモリ関係やセマフォー関連などやばいシステムコールを使うものは一度ラッパーをかましてログを出させるようにしておくと後々役に立つ。開放忘れや枯渇時にエラーを出させるようにできるから。


最近あった不具合ではグローバル変数に保存した使ってないディスクリプタをclose()するとかいうちゃぶ台返ししたくなるようなのがあった。せめてclose()の戻り値を確認していればまだ救えるのに。


ずっとデバッグしていると動作見るだけでなんとなく不具合原因の予想がつくようになってくる。

先日も後輩が1日中かかってバグが見つからなかった所のソースを見ただけでバグを見つけたことがある。

要は範囲外アクセスで関係ない所を壊して飛ばしていたので、「範囲外アクセスしそうなコード」でソースフィルタリングして見れば直ぐにおかしな所は見つかるわけである。


しかしデバッグというののやり方は中々公式化できなくて、事例ごとに「これがこうだから、こうだろ?」と教えるしかないので

デバッグの本があるならちょっと読んで見たい気がする。

P.S こんなのも出してるらしい

解析魔法少女美咲ちゃん マジカル・オープン!

解析魔法少女美咲ちゃん マジカル・オープン!

プレミアムクラブケータイ保障お届けサービス プレミアムクラブのケータイ保障お届けサービスを含むブックマーク プレミアムクラブのケータイ保障お届けサービスのブックマークコメント

先週の日曜日携帯落として、今日休みになったので携帯買い換えるべく、ドコモショップに行ったら

お客様プレミアムクラブケータイ保障お届けサービスに入られていますがどうしますか?」とのこと。

5250円+郵送料3000円でSH905iの新しいのが月曜日には届くそうです。

すっかり忘れてました。早く行けば良かった。

警察に行って遺失物の届けを出して、受付番号を電話で話して作業終わり。

GPSで無くした時の位置検索とか、電話帳お預かりサービスとか、昔に比べて便利になりましたね。

また、無くした時のために受付電話番号をメモ

ケータイ保障お届けサービス:0120-210-360

最初に決めたことは中々変えられない話 最初に決めたことは中々変えられない話を含むブックマーク 最初に決めたことは中々変えられない話のブックマークコメント

おまえら本当に6万5000個ものグローバルIPアドレスが必要なの?使ってるの?

おまえら本当に6万5000個ものグローバルIPアドレスが必要なの?使ってるの?

6万5000個ということはクラスBかな。

うちの会社も最初に凄くネットワークで初歩的なミスを2つやってるけど、もう直せないだろうな。

当時の情報システムの担当者がいかに無知か、わかる人にはわかる。

トラックバック - http://d.hatena.ne.jp/garyo/20081206