Debug hacks conference 2009

報告が遅れたけど、23日のDebug hacksサイン会conference 2009に参加してきた。
デバッグネタでこんなに人が集まるって不思議だな、というのが第一印象で、何でだろうとか顔見知りな人達と話していた。そこで面白いなと思ったのは、デバッガありきになっていて、デバッガがないと開発できないのではないかという意見。printfデバッグしか知らなかった人が、デバッガの使い方や新しいツールを知ることはすばらしいことだし、デバッガを使いこなすことはプログラミングを生業にするために避けては通れない。それを否定するつもりはない。でも、設計もせずに行き当たりばったりに手を動かして、ちゃんとしたものができるとは思わないし、結局デバッグではまる原因になる。yuguiさんが講演で言ってたことも結局そういうことじゃないかと解釈したし、Linusが長い間カーネルデバッガの導入に反対だった(2.6.26でkgdbがマージされた)のも同じ理由からだろう。

LinusはLKMLでこう言っている。

「ルーク、ソースじゃ、ソースを使え!ソースと一体となるのじゃ。」ルークスカイウォーカが、デススターに近づいたときに、自動照準を切り、手動でプロトン魚雷(か何か)を発射したことを思い出そう。だから、カーネルのバグを修正するには、正しい考え方(right mindset)を持つ必要がある。

さらに、

とても多くの人がデバッガの出力を見ることでバグを直している。必然的に、根本的な問題というよりもその兆候を直すことになってやいないかと心配している。

とも。

PCが圧倒的に早くなって、結果的に机上で考えることが少なくなったのも一因かもしれないが、パンチカードの束の時代とか、コンパイル中にコーヒブレイクしてた時代に戻りたいとは思わない。TDDとかBDDとかDbCとか、キーワードはいくつか出てきたけど、新しい開発手法というかベストプラクティスが広まって、デバッグフリーで、安心安全な世の中になってもらいたいものだ(と人事のように。。。)。

最後に、誰かPlan9/Inferno版のDebug hacksを書いてください(笑)
分散OSだから、リモートプロセスしかもアーキテクチャが違っても普通にデバッグできるし、Linuxとはまた違った世界が見えると思いますよ。「acidまめ知識」とかに少しデバッグネタを書いている。

Debug Hacks -デバッグを極めるテクニック&ツール

Debug Hacks -デバッグを極めるテクニック&ツール