2009年07月02日

デバッガを作っている会社のブログです。

開発メンバーの新人、若槻です。

去年の 11 月から、京都マイクロコンピュータ株式会社という、デバッガを作っている会社で働いています。

デバッガというと地味な感じがするかもしれませんが、本来ソフトウェア開発には無くてはならないものです。ところが残念なことに、プログラミングの教科書などでは、デバッガは全く触れられないか、非常にあっさりとした扱いで終わることがほとんどだと思います。また、初心者のうちからデバッガに頼ることを覚えてしまうと、ちゃんと脳内でプログラムの動きを想像して机上デバッグする癖がつかないので邪道だ、というような主張をする人もたまに見かけます。

そういう私も、この会社に入るまでは、それほどデバッガの必要性を感じていませんでした。しかし、今ではデバッガ無しでプログラムを書くことは大変もどかしく、苦痛に感じます。例えばよくある状況として、変数の値がおかしくなっているようだが、この変数への変更はどこで行われているのか調べたい、という状況があると思います。これをデバッガ無しで調べようと思ったら、ソースコードを隅々まで見なければいけないのでかなり大変 (見逃す可能性も高い) ですが、デバッガがあればデータブレーク機能 (特定番地のメモリの読み書きが発生した瞬間に止まる) で一発です。

デバッガ無しでプログラムを書くということは、例えるならば、CT や MRI などの最新医療機器を使わずに診察を行うことと同じように思えます。もちろん基本技術をきちんと習得することは重要ですし、問診や想像力を駆使し、聴診器一つ (printf デバッグ) で病気を診断するベテラン医師の能力は素晴らしいものですが、やはり直接内部を見ることができる確実性には代えられません。

私が会社に入ってすぐに先輩たちに言われて、いまでも強く印象に残っているのですが「仮説は重要だが、仮説はあくまでも仮説であって、(特に組み込み業界では)実際に動いているものだけが真実。プログラム上のロジックがいくら正しくても、もしかしたらハードウェアにバグがあるかもしれない。」という教訓があります。いくら仮説の上に仮説を積み重ねていっても、いつまでたっても砂上の楼閣です。デバッグの際には、確実性をコツコツと積み上げていくことが何よりも重要です。これもまた最近辻先輩に言われたことですが「デバッグとは怪しいところを闇雲に探すことではなく、確実なところを探すことだ。」至言だと思います。

また、デバッガは、バグを発見するためだけではなく、ソースコードを理解する際にも非常に有益です。GCC や Linux のように、大量の ifdef でソースコードが切られている場合、そもそもどの行が実際に実行される有効行なのか ? ということすらわかり難く、下手をすると全く関係ないところを延々と見ていたということにもなりかねません。当然のことながらデバッガを使えば、実際に動いているところだけを直接見ることができます。

先輩方に比べて、まだまだ知識も経験も浅い若輩者ですが、私がこの会社に入って感じたことや得た経験を書いていくことにより、一人でも多くの人にデバッガ(開発)の魅力を伝えていくことができたら良いなと思います。

トラックバックURL

コメントする

名前
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード