号外:【講座】効率の良いデバッグ法【何でもOK】  コンピュータ・インターネット

連日JavaScript漬けで自分の事を忘れかけております、え〜ちゃんです。
前回お伝えした通り、JavaScriptはデバッグの際、エラーメッセージを吐かないので、どこがエラーになってるのか分からない事が往々にしてあります。
今回ご紹介しますは、俗に言う「Printデバッグ」と呼ばれるものです。
具体的には、プログラムを起動した時、通るであろう場所に白々しく出力命令をポンッ、と置いておくだけ。
メッセージは各自がお好きなのをつけたり、変数の中身を見たり、使い勝手は良いです。
このデバッグ法の目的は、その部分を完全に通過したらエラーが修正された、若しくはそこにはエラーはない、という見方をします。
例をあげましょうか。
JavaScript
function error
{
var input=100;
alert("A");
alert(input);
input=200
alert("B");
alert(input);
}
C/C++
void main(void)
{
int input=100;

printf("A:input=%d",&input);
input=200;
printf("B:input=%d",&input);
return;
}
C#はprintfをcoutに変えてください。

ピンとイメージは来ないかも知れませんが、プログラムの規模が大きくなればなるほど、高い効力を発揮します。
アルゴリズム論でプログラムのトレースをやるのと同じ要領で出来るので、イメージが出来れば誰でも簡単に出来て、しかもプロでも通用するデバッグ法です。
作っていたプログラムがある日突然動かなくなった時などに使ってみると案外、簡単に解決出来る事も。
話で聞くだけではきっと分かりにくいと思うので、実際にコンパイルしてみてください。

変数をチェックする事で、手作業ながら文法エラーも弾けるので是非ともお試しください。

コピペでも使えるように、追記にサンプルを公開しておきます。【当日更新まで】
  • 初回:【徒然】仕事の合間に作ったおもちゃなど*
  • 2回:【講義】1から始めるプログラム:JavaScript*
  • 3回:【講座】第1回:プログラムの仕方【初心者】*
  • 4回【講座】第2回:色々いじろうプログラム【JavaScript】*
  • 5回【講座】第3回:ちゃんと弄るよプログラム【JavaScript】*
  • 6回【講座】第4回:見かけがよりプログラム【JavaScript】*
  • 前回:【講座】第5回:外部ファイルとJavaScript【レベルアップ】*
  • 号外:【講座】効率の良いデバッグ法【何でもOK】*
  • 次回:【講座】第6回:プログラムにも役割分担を!【JavaScript】*

使い方
講座をご覧の方にはお馴染みの、テキストエディタ(メモ帳とか)を開きます。
その後、以下のソースを全文コピーして貼り付けます。
ファイル名は何でも構いませんが、拡張子は.htmlにしてください。
後は、
alert(checker); //これを動かす
を文字通り、色々な場所に置いてみてください。
通っていない場所では出力されず、通っている場所では数字が表示される事が分かります。
その後、作ったファイルをブラウザで起動し、ボタンを押すとプログラムが実行します。

【ソース】
<html>
<head>
<title>HelloWorld!</title>
<script type="text/javascript" language="javascript">
<!--
function sample(checker)
{
alert(checker); //これを動かす
checker=100;

checker+=checker;

checker/=checker;

checker

  • checker;


checker=checker+(10-checker);

for(checker=0;checker<10;checker++)
{
if(checker==5)
{
checker=8;
}
else if(checker==9)
{
return;
}
else
{
switch(checker)
{
case 1:
checker++;
break;
case 2:
checker=5;
break;
case 3:
checker

  • checker


break;
}
}
}
if(checker==8)
{

return;
}

return;
}
-->
</script>
</head>
<body>
<form name="botan" method="post">
<input type="button" value="起動!" onclick="sample(0)">
</form>
</body>
</html>

http://shimajimanet.blog96.fc2.com/blog-entry-525.html