ページ

2010年10月14日

トラブルシューティングの方法

ソフトウェアの開発にはバグは憑き物です。バグはそこにあるので、末永くうまくつきあっていかなくてはいけません。すごいプログラマであれば、その憑いていたものは別の人に憑くかかも知れません。

さて、最近、他の人がバグと戦っているのを横でみている機会がありました。いや、先週末ぐらいからそんなことしかしていないような気がします。できれば、プロジェクトの終わりの段階だけじゃなくって、もっと速い段階からみてみたいと思うんですが、なかなかそんな時間はありません。

横でバグと戦っているのをみると、とても面白いです。バグを報告する人から、バグの内容を聞くのですが、現象を正しく理解する前に何か作業を始めようとしてしまいます。現象を確認すると、なかなかちゃんと答えられません。まずは、原因とか対処方法とかはいいので、現象を正しく理解することをやんないといけません。

現象が理解できたら、再現性をみないといけません。再現しないものは直ったという確証が得られないのです。でも、現実は悲しいことに特定の環境でしか再現しないものとか、すごく低い確率でしか起きないので、デバッグできなかったり、デバッグしようとすると再現しない嫌らしいものもいます。まあ、そういうものはソースコードを頭の中に入れて、頭の中で再現させるルート見つけたりしましたが、僕はもうそんな芸当ができるほど若くはないです。

コードをみながら再現するルートを見つけようとすることもあります。でも、最近みていた若者はコードをみると、なぜか直そうとか、バグの原因箇所を第六感によって見つけようとします。何もわかっていないのに、どう直すのか、不思議です。六感の信用度もよく分かりません。なので、ちゃんと考えてもバグは生まれるのに、そんな風に直す(?)とさらなるバグの原因になったりします。

で、再現できれば直すのはほとんどのケースが簡単です。ほとんどなので、直せないもの、直すのがめちゃくちゃ大変なものもあります。  

で、以前、僕がバグを解析しているところを若い人に見せて教えようとしたことがあります。結果は見事に失敗でした。思考をすべて言葉にしている訳じゃないので、いくつかをすっ飛ばしていたり、説明するのがもどかしくなったり、理解してもらえなかったり・・・。今回は、指示を出しただけですが、うーん、成功とは言えないような・・・。

結局、トラブルシューティングで言える確実な方法とは、「まずは落ち着け!」。 



0 件のコメント: