SE道場 - デバッグの極意(コーディング編) |     ✤ We Love Softbrain ✤ 

    ✤ We Love Softbrain ✤ 

        日々の仕事や、プライベートな趣味まで掲載しています。

こんばんはビックリマーク
シニアAですクローバー

いつもSE道場をお読みいただきありがとうございます音譜

本日は『デバッグの極意(コーディング編)』ですアップ
たくさん楽しんで下さいねビックリマーク



私がコンピュータ業界に入った頃、デバッグと言ったら、机上デバッグのことでしたクローバー

えっ、机の上で何するのはてなマークって感じですよね。

机上デバッグというのは、文字通りコンピュータを動かさずに机の上でデバッグすることですひらめき電球
主に、関数の単体デバッグに力を発揮します。


当時、私は通信大手N社に常駐していましたが、十数人の開発メンバーに対して、ミニコンが1台しかなく、マシンタイムを予約しないと、コーディングもテストもできませんでしたあせるあせる


そのため、紙に書いたコーディングリストを基に机上デバッグをしていましたクローバー


いいえ、それしかすることがなかったのです汗


ミニコンは、ミニという割にはかなり図体が大きく、机を縦に並べた位で、高さも胸のあたりまでありましたビックリマーク
きっと、何十畳の部屋一杯の大型コンピュータに比べたら、『ミニ』だったんでしょうねウインク

そのころは、トランジスタが開発されてコンパクトになっていましたが、真空管の時代だったらどの位の広さが必要だったか、検討もつきませんびっくり


余談はさておき、机上デバッグのやり方ですが、まず関数(アセンブラではサブルーチン)を紙に印刷しますビックリマーク
この印刷したものが、とても大事ですビックリマーク
できれば、メモを書くための余白があれば最高ですアップ





まず、関数の機能に注目して、何をしたい関数なのか再確認しますひらめき電球


次に、関数の引数に注目して、それぞれの引数が取り得る値を確認しますひらめき電球


引数値はプログラムの境目の数値を選びますひらめき電球
境目の数値は、例えば引数が1~100の数値を取り得るとして、プログラム中でif(引数変数<50)のコーディングがあったとしたら、49と50となりますビックリマーク

つまり、if文の条件が満たす・満たさないの両方を境目の数値でテストするのですひらめき電球


if文と同じように、for文の開始時・ループ途中・終了時などのループカウンタも机上デバッグに必要ですひらめき電球
そうやって全ての引数に値を入れて、デバッグ開始です筋肉


実行は、紙の上で全ての変数の値を確認しながら一行ずつ進めますひらめき電球


引数や内部変数、外部変数などの変化に注目しますひらめき電球

変数がどう変化すれば良いのか、そこが分かっていないと、ただ動かしてもデバッグにはなりませんビックリマークビックリマーク


自分で作ったプログラムであれば、そこのところを把握することがとても大事ですウインク


そして、引数の全ての値を変化させ、関数の全ルートを通したら、机上デバッグ完了となります音譜
慣れてくれば、メモも取らず、頭の中で変数を変化させながら机上デバッグすることが可能ですよニヤリ


皆さん、もうすでにおわかりですねひらめき電球
この机上デバッグが極意なのですビックリマークビックリマークビックリマーク


もう一つ大事なことがありますひらめき電球

心構えですビックリマーク

この心構えがなっていないと、全てのバグは見つからないでしょうクローバー


それは、


『バグがある。バグが潜んでいる。だから正常に動作しない!』


こう思いながらデバッグすることが、もう一つの極意なのです筋肉
いまの時代、簡単にマシンで実行できてしまいますが、こういった古き良き習慣も身につければ、最強のプログラマとなれるのではないでしょうかビックリマーク

 


SE道場では、プログラミングの極意や開発の苦労話等、様々な記事を投稿していますビックリマーク是非ご覧くださいクローバー

 

1つ前の開発ネタは...