世界線航跡蔵

Mad web programmerのYuguiが技術ネタや日々のあれこれをお送りします。

2009年06月07日

実践デバッグ技法

オライリー・ジャパンから『実践デバッグ技法』を頂戴した。

概要

オライリーの『実践xxx』『Mastering xxx』 という本は技術xxxに少し慣れてきた人が更にステップアップするための本という印象がある。そして、体系的な理論というよりは現場の常識というものを扱っている。

『実践デバッグ技法』は前者の印象には反する。これは本当にGDBの使い方と問題の切り分け方を手取り足取り教えてくれる本で、まだデバッガが何なのかすら分かっていない人こそ読むべきだ。

一方で後者の印象には合致する。これこそが『Debug Hacks』で著者のよしおかさんが訴えていた点でもあった。つまり、今までデバッグの技法というものは理論化されそれが普及しているとは言い難い。にもかかわらず、現場では常識である。初心者はどうにかしてこれを身につけなければならないが、ではガイドとなる本はどれだけあったろうか。

デバッグ技法の伝授

私もどうやってデバッグのやり方を覚えたかといえば、独自の試行錯誤と、デバッガのマニュアルと、断片的に見聞きする技を頼りになんとなくであった。そういえば、最初はデバッガというものの存在自体を理解していなくて、意図せずIDE内でステップ実行になって戸惑ったことがあるような記憶がある。

よしおかさんたちはカーネルプログラムの場合を中心にこの文書化を試みて、『Debug Hacks』でそれを成し遂げた。『実践デバッグ技法』は『Debug Hacks』よりはもっと初心者向けで、ユーザーランドのプログラマ向けにデバッグのやり方を教えてくれる。

対象技術

内容はGDBが中心で、そのフロントエンドとしてのDDDとEclipse (with CDT)の使い方も並行してずっと扱っている。要するに、GNUユーザーランドでC/C++開発をする場合が話題の中心だ。

GDBのコマンド体系や「ブレークポイントとは何か」から話を始めて、マルチスレッドプログラムのバグをどうやって発見するかまで書いてある。また、最後のほうではPerlやPythonのデバッガ、Visual C++の場合もいくらか書いてある。トレーサーやメモリデバッガの話もある。

対象読者

printfデバッグしか知らない初心者はこの本を読まなければならない。どのみち最後にはこの本に書いてあることを身につけることになるのだから、ならば無駄な遠回りをする必要はない。

GDBを使いこなして開発をしている人なら、この本の内容は大体知っていることだろう。でも、やはり使わない機能は印象に残らないので、具体的なデバッグ例とともに一回りの機能を扱っているのは有り難い。自信のある人でも、気が向いたら読んでみてもよいのではないだろうか。 私はGDBのinfoはざっと読んだから一応機能は頭に入っているつもりだったけれども、ttyコマンドは「そんなのあったっけ」と思った。cursesプログラムはprintfデバッグが不能なのでデバッガが必須で、このとき、debugeeとは別の端末を使うためにttyコマンドを使う、と書いてある。なるほどね。

メモリデバッガの話題も、私が初心者のころに知りたかった。最初、私はそういうツールの使い方を知らずにヒープ破壊に悩まされて、力業で問題箇所を二分探索していたのだった。

デバッグは皆が皆、「技を盗んで自分で」覚えている領域だ。だからこそ、この手の網羅しきれなかった知識の見落としが出やすい。この本のような書籍がもっと普及すれば、きっと見落としはなくなっていくのだろう。

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

著者
Norman Matloff, Peter Salzman
表題
実践 デバッグ技法 ―GDB、DDD、Eclipseによるデバッギング
出版者
オライリージャパン
ASIN
4873114063
価格

トラックバック

http://yugui.jp/articles/831/ping

現在のところトラックバックはありません

コメント

blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2016年07月
  2. 2016年01月
  3. 2015年09月
  4. 2015年08月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system