デバッグの基本 つづき |
|
 |
|
 |
|
IDEの基本のデバッグ機能
・ |
エラー表示機能 |
・ |
ブレークポイント機能 |
・ |
ウォッチ機能 |
・ |
ステップ実行機能 |
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
練習用コードの内容が分かった
ところで、このコードを使って
デバッグの解説をしていくよ。
IDEの基本的なデバッグ機能と
それを使ったデバッグの仕方を
見ていこう。
IDEにはエラーを調査する
ための様々な機能が
用意されてるんだよ。
|
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
虫探しね。 |
|
IDEって
頼りになるー! |
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
じゃあ、デバッグを
始めよう。
練習コードを見てくれ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
うーん。
でも、このコード、
最初からエラーが
出ちゃってるけど? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
あのね・・・
何の練習か
分かってる? |
 |
|
 |
大丈夫かな? |
|
|
|
 |
エディタウィンドウ |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
まずIDEの基本的な
エラー表示機能
を2つ見ておこう。
これは、
エラーの内容を表す
エラーメッセージを
表示する機能のことね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
最初に
実行前のエラー表示機能。
コードにエラーがあると
エディタに赤い線が表示される。
これはもう見てるけどね。
これでまず、
エラーの内容を確認しよう。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
カーソルをエラーの上に
載せると、エラーの内容が
表示されるんだよね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
エディタウィンドウ |
|
|
簡単だけど。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
この機能では
主にJavaの構文間違いとか
Javaの仕様と違う場合の
エラーが表示されるよ。
今回のエラー原因分かるか?
コードを修正してくれ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
これは分かるよ!
「シンボル」って前にも
見てるから。
変数 a が宣言
されてないんだね! |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
ばっちり!
intって
書けば
いいだけね! |
|
|
|
 |
|
 |
|
デバッグテスト用コード
(KotoDebugのKDMain.java)20行目~ |
|
・・・ |
|
|
|
020 |
|
//******************* |
|
021 |
|
//実行時エラーテスト |
|
022 |
|
System.out.println(""); |
|
023 |
|
System.out.println("********** 実行時エラーテスト結果 **********"); |
|
024 |
|
System.out.println(""); |
|
025 |
|
|
|
026 |
|
int
a
= 3;//変数a を
3で宣言して初期化 |
|
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つエラーを
解消したな。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
クリア! |
 |
|
 |
おめーとさん。 |
|
|
|
 |
エディタウィンドウ |
|
|
もしかして
わざと宣言して
なかったの? |
 |
|

|
あのね・・・。
どんだけ
ポンコツだと
思ってる? |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
じゃあ、
エラーが消えたところで
練習コードをデバッグ実行
してみてくれ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
まずは
エラーを
読んでみてね。 |
 |
|
 |
別の
バグだ! |
|
|
|
 |
実行結果(出力ウィンドウ) |
|
|
バグだらけー |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
次に実行時エラーの表示機能。
実行した結果がエラーに
なった場合、出力ウィンドウに
エラーメッセージが表示される。
これで、実行時のエラーの
内容を確認しよう。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
「実行」してエラーが
表示されたから
これは「実行」時エラー
なんだね。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
だらけー |
|
|
 |
|
 |
|
エラーメッセージの内容
Exception in thread "main" |
java.lang.ArithmeticException
|
: |
/ by zero |
mainスレッドで例外が発生した |
例外名 |
|
原因内容 |
|
|
at
kotodebug.KDMain.main( |
KDMain.java:36 |
) |
例外を発生したクラスの関数名 |
ファイル名と行番号 |
|
|
「ファイル名と行番号」をクリックでエラー箇所に移動できます |
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
エラーメッセージの見方は
こんな感じ。
「例外名」や「原因内容」の
英語の意味を調べれば、
エラー内容のおおよその
見当がつく。
ネットや辞書を使って
調べてみよう。
標準APIのJavadocを使って
で調べる事もできるよ。
|
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
「例外」は
「エラー」と
同じ意味ってことで。
今のとこはね。。。 |
|
これなら
分かるかも。 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
このエラーメッセージを
見てみると「Arithmetic」
って出てるところから
算術関係のエラーって
ことが分かるな。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
英語
調べてねー |
|
うーん
なんだろう。
0点ってこと? |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
計算のエラーで・・・
エラーの原因内容の
「/ by ZERO」
って何かな? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
エラーメッセージを
調べてみても
よく分からない場合。
まずは、エラー行と
その周囲のコードに
エラーの原因が無いか
調べてみよう。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
うーん、分かんない・・・。
前の行とか見ても
特に問題はないような・・・。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
 |
難しい。。。 |
|
|
|
 |
|
 |
|
デバッグテスト用コード
(KotoDebugのKDMain.java)20行目~ |
|
・・・ |
|
|
|
020 |
|
//******************* |
|
021 |
|
//実行時エラーテスト |
|
022 |
|
System.out.println(""); |
|
023 |
|
System.out.println("********** 実行時エラーテスト結果 **********"); |
|
024 |
|
System.out.println(""); |
|
025 |
|
|
|
026 |
|
int
a
= 3;//変数a を
3で宣言して初期化 |
|
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) +
"です。"); |
|
・・・ |
|
|
|
|
赤はエラーを起こした行 |
|
|
 |
|
 |
|
|