ミラクル・リナックス株式会社の精鋭エンジニアたちが、長年のLinuxカーネル開発の経験で培ったデバッグテクニックを詳解。こころがまえから、準備、必要な知識、バグの原因をすばやく特定し修正するために便利なテクニックとツール、高度なデバッグ技まで惜しみなく披露します。多くの事例に基づいた実際的実用的な技が満載です。効率良くかつクオリティーの高い開発のために必須の一冊です。
Debug Hacks推薦の言葉
プログラムにはバグが付き物です。バグは人間の予想を超えたところからやってきます。世界最初のバグは、リレー式計算機の中にまぎれこんだ蛾だったそうです。あわれリレーの間に挟まれた蛾によってコンピュータの誤動作が引き起こされました。このエピソードがきっかけとなり、プログラムの間違いのことがバグと呼ばれるようになったのだそうです。この蛾は後にCOBOLの開発者となるグレース・ホッパー女史の日記に記念として張りつけられていたと聞きます。
それから半世紀以上が過ぎ、あいかわらずバグは生み出され続けています。「プログラムは思った通りではなく、書いた通りに動く」というのはプログラマの中に伝わる「ことわざ」のひとつです。そして人間は間違えるものなので、プログラムの中にはバグが入り込みます。ある意味、バグとは人間の限界を見せつけてくれるものなのかもしれません。ほとんどのバグはちょっとプログラマを悩ませるくらいのかわいいものですが、最近はバグによって引き起こされた「事件」によって新聞をにぎわすようなこともたびたび起きています。
プログラマの仕事はプログラムを作ることですが、コンピュータが社会に浸透し、プログラムが複雑化するに従って、完全なプログラムを書くことは非常に困難になってきています。その結果、すべてのプログラマは必然的にバグに対処する必要があります。個人的にはプログラマの時間の大半が、バグを見つけることと、それらを直すことに費やされているのではないかと感じます。
しかし、ただやみくもにバグを探してもうまくいくわけはありません。バグにはバグの見つけ方があり、直し方があるのです。特にバグを見つけだし、特定するにはさまざまなテクニックが存在します。「デバッグ」という言葉は「バグを直すこと」のような印象がありますが、実際にはどこにあるのか特定されたバグはまったく恐ろしいものではなく、たいていはすぐに直すことができるものです。デバッグの神髄はバグの発見と特定にあるのです。本書は歴戦のプログラマが経験から獲得したバグの見つけ方・直し方が満載されています。特に普段はお目にかからないようなLinuxそのもののバグについてのHackは、貴重な情報ではないかと思います。いくつかのHackは多くのプログラマが日常的に使うものではないかもしれませんが、それでもなおその発想は参考になります。特にgdbやvalgrindやoprofileのような便利なツールについてきちんと解説してあるのがありがたいところです。また、2つほどRubyの「バグ」についても扱っていただいてます。ありがたいことです。
本書がプログラマの皆さんのバグへの戦いの日々が少しでも楽になるための「道標」となることを期待しています。
2009年3月 羽田空港にて
まつもとゆきひろ