こんばんは
シニアAです
いつもSE道場をお読みいただきありがとうございます
本日は『デバッグの極意(コーディング編)』です
たくさん楽しんで下さいね
私がコンピュータ業界に入った頃、デバッグと言ったら、机上デバッグのことでした
えっ、机の上で何するのって感じですよね。
机上デバッグというのは、文字通りコンピュータを動かさずに机の上でデバッグすることです
主に、関数の単体デバッグに力を発揮します。
当時、私は通信大手N社に常駐していましたが、十数人の開発メンバーに対して、ミニコンが1台しかなく、マシンタイムを予約しないと、コーディングもテストもできませんでした
そのため、紙に書いたコーディングリストを基に机上デバッグをしていました
いいえ、それしかすることがなかったのです
ミニコンは、ミニという割にはかなり図体が大きく、机を縦に並べた位で、高さも胸のあたりまでありました
きっと、何十畳の部屋一杯の大型コンピュータに比べたら、『ミニ』だったんでしょうね
そのころは、トランジスタが開発されてコンパクトになっていましたが、真空管の時代だったらどの位の広さが必要だったか、検討もつきません
余談はさておき、机上デバッグのやり方ですが、まず関数(アセンブラではサブルーチン)を紙に印刷します
この印刷したものが、とても大事です
できれば、メモを書くための余白があれば最高です
まず、関数の機能に注目して、何をしたい関数なのか再確認します
次に、関数の引数に注目して、それぞれの引数が取り得る値を確認します
引数値はプログラムの境目の数値を選びます
境目の数値は、例えば引数が1~100の数値を取り得るとして、プログラム中でif(引数変数<50)のコーディングがあったとしたら、49と50となります
つまり、if文の条件が満たす・満たさないの両方を境目の数値でテストするのです
if文と同じように、for文の開始時・ループ途中・終了時などのループカウンタも机上デバッグに必要です
そうやって全ての引数に値を入れて、デバッグ開始です
実行は、紙の上で全ての変数の値を確認しながら一行ずつ進めます
引数や内部変数、外部変数などの変化に注目します
変数がどう変化すれば良いのか、そこが分かっていないと、ただ動かしてもデバッグにはなりません
自分で作ったプログラムであれば、そこのところを把握することがとても大事です
そして、引数の全ての値を変化させ、関数の全ルートを通したら、机上デバッグ完了となります
慣れてくれば、メモも取らず、頭の中で変数を変化させながら机上デバッグすることが可能ですよ
皆さん、もうすでにおわかりですね
この机上デバッグが極意なのです
もう一つ大事なことがあります
心構えです
この心構えがなっていないと、全てのバグは見つからないでしょう
それは、
『バグがある。バグが潜んでいる。だから正常に動作しない!』
こう思いながらデバッグすることが、もう一つの極意なのです
いまの時代、簡単にマシンで実行できてしまいますが、こういった古き良き習慣も身につければ、最強のプログラマとなれるのではないでしょうか
SE道場では、プログラミングの極意や開発の苦労話等、様々な記事を投稿しています是非ご覧ください