デバッグの基本 つづき |
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
これで
ステップ実行の説明はおしまい。
それじゃ、
ブレークポイントと
ステップ実行を使って
エラーを探していこう。
ブレークポイントを立てた行の
変数の値と計算が正しいか
順番に確認して行ってくれ。
「続行」のボタンを使うと
次のブレークポイントまで
一気に進めるから便利だよ。
|
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
出力ウィンドウの
結果も一緒に
見てね。 |
|
「続行」で、次の
ブレークポイントまで
実行できるんだ。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
最初のaの値が3で
今1引いたから2だよね。
合ってる。
計算も100/2だから50。
問題ないね。
次の行に進めて
aの値は・・・
これも問題ないんじゃ
ないかな。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
エディタウィンドウ |
|
|
|
|
 |
|
 |
エディタウィンドウ |
|
|
ここで
実行したら
エラーになるよ。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
じゃあ、最後のポイント。
エラーの直前に
進めて調査してくれ。
ほら、変数の中身が
「0」だから・・・
これで分かっただろ? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
あれ!?
計算式ドラッグしても
計算結果が
表示されない!
壊れちゃったのかな?
|
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
うそー
なんでー |
|
|
|
 |
|
 |
エディタウィンドウ |
|
|
もう答え
言っちゃってる
よね? |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
もうー、壊れてないってば!
何で表示されないかって言うと
計算できないから!
ほら、「0」で割り算は・・・
これで分かっただろ? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
えー・・・
この変数の「0」が
「/ by ZERO」と
関係あるって事?
うーん、やっぱり、
分かんないや。。。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
あたし
0点て
こと? |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
あのね、ことちゃん・・・
エラーメッセージの
「/ by ZERO」の「/」は
割り算の記号!
変数 a に入ってるのが
「0」でしょ!
つまり、計算が「100/0」。
100をゼロで割ったってこと!
ゼロで除算はできないって
学校で習ったでしょ!
小学校?だっけ? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
そ、そうだっけ?
あははー。
忘れちゃったー、ごめんー。
それが、エラーの原因
だったんだね。。。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
だめだ
こいつ・・・。 |
 |
|
 |
そう言えば
やったような
ないような。 |
|
|
はるーか
大昔の事だから
忘れてても
しょうがないか。
おばちゃーん。
キヒヒ。 |
 |
|
 |
もう!
ほんの
ちょこっと
だけ前! |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
じゃあ、エラーを無くすために
0で割らないように修正しよう。
今回は、
変数 a の初期化を
3から4に増やして、
4つ目の計算のaの値を
1になるようにしよう。
修正して実行してくれ。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
かいけつー |
|
分かったー |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
はいっ。
修正して実行したら・・・
あっ、エラーが消えた!
さっきは、3つしか
計算結果が出てなかったけど、
今度は4つ全部出てる。
4つ目の計算が
100/1
になったからだね。
やっぱり
0で割ってたのが原因
だったんだね! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
デバッグテスト用コード
(KotoDebugのKDMain.java)20行目~ |
|
・・・ |
|
|
|
020 |
|
//******************* |
|
021 |
|
//実行時エラーテスト |
|
022 |
|
System.out.println(""); |
|
023 |
|
System.out.println("********** 実行時エラーテスト結果 **********"); |
|
024 |
|
System.out.println(""); |
|
025 |
|
|
|
026 |
|
int a
= 4;//変数a を
4で宣言して初期化 |
|
027 |
|
System.out.println("100を"
+ a +
"で割ると" +
(100/a) + "です。"); |
|
028 |
|
|
|
029 |
|
a -= 1; |
|
030 |
|
System.out.println("100を"
+ a + "で割ると"
+ (100/a) +
"です。"); |
|
031 |
|
|
|
032 |
|
a -= 1; |
|
033 |
|
System.out.println("100を"
+ a +
"で割ると" + (100/a) +
"です。");
|
|
034 |
|
|
|
035 |
|
a -= 1; |
|
036 |
|
System.out.println("100を"
+ a +
"で割ると" + (100/a) +
"です。"); |
|
・・・ |
|
|
|
|
黄色の部分を修正して実行して下さい。 |
|
|
 |
|
 |
|
|
 |
実行結果(出力ウィンドウ) |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
今見てきたのが
実行時エラーだよ。
じゃあ、次に
論理エラーの例を
見ていこう。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
こうやって
エラーの内容を見て
1つづつ解決して
いくんだね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
お前には
例になら
なかった
けどな! |
 |
|
 |
ごめんー。
でも、なんとなく
分かったから。
後で復習するね! |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
でも、
Javaのコードって
見れるんだねー。
びっくりしたー。
秘密じゃないんだ! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
Javaは
オープンソースだからね。
中のコードも自由に
見れるんだよ。
決まりを守れば
改変することだってできる。
ここら辺についてはそのうちね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
すごーい。
なんか
緊張するー。 |
 |
|
 |
ちなみに
中を見ても
Javaは
まったく
壊れません。 |
|
|