デバッガなんて使わねーよ

吉岡さんのblogより。

gdb を emacs から使う

へー、

アプリケーションの開発時にはデバッガーを使うのはあたりまえだろう。そのデバッガーを使えなくて何がプログラマだ、くらいの事は思うのだけど

そうか、私はプログラマじゃないんだな。

この手の言い草はよく聞くけれど、私はデバッガはほとんど使わない。使ってもせいぜい、どうしても他に資料のないコアダンプを解析しなきゃいけない時だけで、普段はまるっきり使わない。そこにソースがあるなら、怪しい箇所を推理しつつprintfをつっこむ。なぜなら、私はプログラムを書く時に一番大切なものは、そういったツールを使う能力ではなくて、

思考力

であると思うからだ。それと共に、本当にクリティカルなバグには、デバッガは無力だからでもある。

プログラムを書く領域の違いってのはあるんだろうけど、どうやっても取れないなーというバグってのは、微妙なタイミングの絡むmulti threadなプログラムだったり、発生確率の低い領域破壊だったりする。そういったのってデバッガうまくやるのは難しい。領域破壊なんてのは、electric fenceとか使う。これもスレッド絡みだとうまく行かなかったりするけど。むしろ、デバッガなんぞで簡単に見つかるようなバグで悩むようだったら、そっちの方がプログラマとして終わってると思う。核ミサイルに防弾チョッキやヘルメットがあっても、無駄無駄無駄無駄無駄…

いや、別に合理的な理由なんてどうでもいいんだ。ただ、私はデバッガなんてあんまり好きでないし、デバッガを動かすことで隠れてしまうバグとかも結構あって、あくまでも経験的に適当なプローブルーチン(って、ほとんどprintfだけど)をぶっこむ方がやりやすいってこと。確かにそういったことの準備が悪いと、デバッガの方が楽だし早いんだろうけど、元々そういったものをぶっこむ習慣を持っていて、それ用の部品とかもいっぱい持っているから、あんまり面倒臭いことでもない。

さすがに資料がコアダンプしかない時は、デバッガ使うしかないんだけど、そんな時に限ってシンボルが入ってないという罠があったり。だから、私にはデバッガの「成功体験」がまるでない。そのせいもあって、どうしても「デバッガは便利だよ」「デバッガを使え」という意見には同調出来ない。

それよりは、必要なだけプローブルーチンをぶっこんで、適当に動作を監視しつつ資料を取って、それとコードを眺める方がずっと虫が取れる。だってデバッグで一番大事なのは

推理力

だろ。下手に情報が多いと情報に惑わされるなんてのも、情報の世界では常識だよな。こういった能力を身につけるには、デバッガなんて頼らないでひたすらコードを読んで動かしまくることだと思う。

つーことで、私はデバッガなんて使わない。それで困ったことはほとんどないし。まぁ若者相手に酔っぱらい親父が訓示垂れるんだったら、こういった言い草もいいんだろうけど。

PS.

twitterで吉岡さんにdisり返されたヽ(`Д´)ノ 「想定内」なんだそうで。

それは逆に言えば、私にとってデバッガなんてその程度のツールでしかないってこと。読みスジとしては、「愛の反対は無関心」ってこと。「それよりエディタの方が」と書こうと思ったけど、エディタも実はそんなに思い入れがなくて、Emacsがなければないなりに何とかしちゃう。思い入れのある、いろいろ語ってしまうようなツールってないなぁ。

PS2.

確かに使うと便利だなとは思うのよ。うまく目的にフィットしてくれればね。

でも、いつもそんなに具合よく使えない。multi-threadになるとたいていお手上げだし、Shiroさんも書いてるようなVM的なものも多用するんだけど、これもお手上げに近い。特にVMのように状態遷移しながらグルグルってのは、汎用のデバッガではなかなか難しい。いろいろ翻訳する工夫を考えたら、そんなロジックを最初から組み込む方がいい。

私にとってデバッガって「デレツン」なんだよね。

Yahoo Facebook Twitter Digg FriendFeed Delicious Google Translate
This entry was posted on8月 24th, 2008 at 19:47:35. You can follow any responses to this entry through the RSS 2.0. Both comments and pings are currently closed.

4 Responses

Comments(3)Trackbacks(1)

  1. タク

    ICEをデバッガと呼ぶかどうかはあれですが。

    ICEはあると本当に助かることがあります。
    HWの不具合で、メモリがごくまれに壊れるとか。
    そういう時にソフトウェアが壊していないことを、
    証明できたりするので。不具合原因のHWとSWの
    切り分けに大変役立つことがあります。

    まずソースコードチェックというのは、ハゲドウですが。

    2008/8/24 日曜日 20:42:10 | #1
  2. デバッガだけではどうしようもないのはそうですが、だからといってデバッガを否定するのは筋違いかと。木を切るならチェーンソーがあったほうが便利ですし。
    ただ、今のデバッガはチェーンソー並みに気が利かないのは問題ですね。デバッガにprintf(というかログ取り)支援機能が無いのは何でなんだろう?

    2008/8/26 火曜日 1:54:04 | #2
  3. 窪田 敏之

    そうですね、デバッグっていうかトラブルシューティングにもっとも大切なのは思考力その中でも想像力と推理力ですよね。そういう意味でデバッガとprintfはprintfのほうが意識を集中させやすいだけ使いやすいツールなのかもしれない。

    ところで別の分野で人体の「不具合」つまり病気なんですけど、これを診断する名医のセリフがこのおごちゃんの書いているのに似ている。病気の治療もトラブルシューティングの一種と考えると、自然と似てくるのかも。

    2008/9/12 金曜日 2:12:51 | #3
  1. cactusman日誌 より:

    [プログラミング]デバッガは使えるべきかな…

    アプリケーションの開発時にはデバッガーを使うのはあたりまえだろう。そのデバッガーを使えなくて何がプログラマだ、くらいの事は思うのだけど、世のプログラミング言語の入門書…

  • 私について

    ただのプログラマです、ハッカーではありません。

    秋葉で暮し秋葉で仕事してますが、秋葉系は嫌いです。物事を冷静に分析することは好きですが、ニヒリストは嫌いです。

    秋葉でちっこい会社をやってます。 こーゆーことがお仕事です。

    詳しいことは、自己紹介のページでも見て下さい。また、mixiの方でもいろいろわかるかも知れません。twitterは@ogochanですが、たいしたこと言ってません。近頃はShorplug内の別館で日記書いたりもしてます。だいたいここのコピーだったりしますが、ログインするとコメントがつけられます。

    日経ITProに連載(生越昌己のオープンソースGTD)を書いています。「ちゃんと書いた文章」が読みたい人は、そっちを読む方がいいと思います。

  • このページについて

    ここは私の雑文の置き場です。WordPressを使っていますが、いわゆるblogのつもりで書いているわけではありません。「覗き見のできるチラ裏」くらいの意味しかありません。

    もしかしたら有用なことがあるかも知れません。あるいはむかつくことも書いてあるかもしれません。それらはみな「そんなものだ」と思っておくに留めましょう。

    コメントを書くのは構いませんが、「反論」の類はよそでやって下さい。同意する気のない人達と議論する気は全くありませんので、議論したければよそで勝手にやって下さい。

    と言っても、「読むな」「広めるな」というわけでもありません。リンク、ブクマの類は御自由に。

  • カテゴリ

  • 過去の記事

  • メタ情報