1行のバグを見つけるのに4時間ぐらいかかりました。コードをコピペした時に一ヶ所 in を out に書き換えるのを忘れたらしい。「ここは大丈夫だろう」とか偏見持っちゃうとだめだね。
gdb の使い方が良くわかって学生には良かったんじゃないかと。Cell は特に癖があるので...
set spu stop-on-load
とか、new のtraceは、一旦、malloc まで入らないと動作が変とか。
cont 999
で、バグが出るまでのbreak point通過数を見て、ingore で、その直前で止めるとか。
watch ((Hoge*)0x23423)->fuga
見たいに特定アドレスを監視するとか。hardware watch point でないと遅いとか。
if (a) f();
if (b) g();
みたいな単純なものでも、aとbが両方成立する時だけ動かないとかだと、Test を書くのはあまり自明にならない。Coverage は、こう言う時には無力だし。状態数え上げは、まだ、コスト高いしね。
if (a & b) fg();
else if (a & !b) f();
else if (!a & b) g();
else if (!a & !b) ;
に書き直すなんてのを思い付きますが、まぁ、ないでしょう。
とは言え、一応、Word count も性能向上したようなので良かったです。(でも、なんで、僕が書いた版を直さないんだよ...) もっとも、APIが複雑になっちゃたので、使えない感じ。まぁ、それは新しい版でも作るんだろうな。
並行して、UMLも書いてもらえば良かったが、まぁ、難しいな。
と言うのを、iPhone 上のmixi公認アプリから出そうと思ったら、既に動かなくなってました。ひどい。
No comments:
Post a Comment