実践デバッグ技法

新しい現場のコードは C++。それは変わらないのだけれど、以前の現場で使いまくっていたshared_ptr 無しなのですが、ヒープにメモリを動的によくとるシステムです。久々の new と delete は、腕のなまったわたしと せぐめんてーしょん・ふぉーると との素敵な出会いを効率よくマッチング。

・・・で、開発効率を落としてくれます(しくしく)。おまけに例外は禁止っぽい(この状況で例外安全なコードを書くのが大変だからかしら/でも assert文はアリ..CppUnit的には例外の方がうれしいなぁ・・と脱線だっせん)。

そうだ!こんな時はデバッガだ!・・というわけですが、あたしゃ gdb なんて ブレイクポイント張ってステップ実行するくらいしか出来ないよ・・というわけで、こんな本です。

実践 デバッグ技法 ―GDB、DDD、Eclipseによるデバッギング

実践 デバッグ技法 ―GDB、DDD、Eclipseによるデバッギング

本当は、ジュンク堂組み合わせ最適化アルゴリズムの本を探しに行ったのによいのが見つからなかったから、なんとなく「何か本を買わないと損した気分だなー。そういえばこの本 昔yuguiさんが blog で褒めてたなー。」と買ってしまったというか。

個人的には 近代的なプログラミング言語で、ユニットテストをちゃんと作りながら、契約違反には適切な例外が起きるようにプログラミングすれば、デバッガが必要なほどバグをこじらすことはほとんど無い・・という意見(というか実感)です。けれど、こじれたときにデバッガを使えるか否かはまた別の問題で。

この本は本当に初心者向けなのですが、いまどきのGUIべったりな初心者にgdb を教えてしまえるわかりやすさというのがあって、種を明かせば DDD や Eclipse と併記しながらステップアップしていく構成が勝利の鍵なのですけれど、うん、これは恐ろしく読みやすい。

ツールの使い方じゃない、「デバッグ技法」の部分だけれども、わたしみたいないい加減デバッグに馴染みきっているお年頃には 当たり前のことばかり書いてある印象です。けれど、これを当たり前の一言ですませてよいのかな、という大事なことがいっぱい。しかも、「でも知ってることだし」と油断してると、意外に「えっ、そうだっけ」なことがあったりみたいな。この本は、現場に新人としてはいって先輩についたら、ハマる度に隣で教えてくれる、それが本になっています。

で、この本を「入門」ではなく「実践」にしているのが 5章の「多重実行環境のデバッグ」と6章の「特別な話題」。ありがちハマりがちな状況で、真にデバッガが必要なシチュエーションです。よちよち歩きの補助具から、実務レベルのデバッグまでフォローしているから「これ一冊で」OKと言えてしまう嬉しさがあります(なんかつきなみ)


* * *


「二分探索の原則」とかとても大事な、それでいてプログラマならみんな知っていることが書いてある本です。ツールの使い方だけじゃない「デバッグのしかた」が学べるということは、よいプログラムを書く方法、強いては論理的に考える方法を教えてくれる、そんな本です。おすすめです。

ところで素朴な疑問なのですが、この本、なんで Emacs が出てこないのでしょうか。(gdbvim を使うことになっている)・・・もしかして、エディタ戦争!?

(いあいあ、著者が Emacs を使っていない‥と言うだけの話なのですが、なんかそれがまた妙に現場の香りが漂ってきまするる)