広告
  サイト内検索:
<Let's create a game!> Introduction of programming for absolute beginners English

デバッグ
デバッグ

デバッグ

プログラムのバグ(間違い)を直す事。


セッションではIDEの便利な機能を使って、
プログラムの間違いを探して直していきます。



デバッグの基本

・エラーの種類
・エラーの原因
・エラーの調査
・IDEの基本のデバッグ機能の使い方
・バグの探し方


  エラーの種類

エラーの種類

主なエラーには、実行時エラー
論理エラー
の2種類がある。
 

エラーの種類


実行時エラー プログラムを実行した時に起こるエラー。

Javaランタイムからエラーメッセージが
出力され、プログラムは基本的に停止する。
論理エラー プログラムが想定した結果を出さないエラー。

Javaランタイムによるエラーメッセージは表示されず、プログラムは正常に実行される。

プログラムのアルゴリズムやロジックが
間違ってる場合に起こる。
原因が分かりにくい場合が多い。


  実行時エラー

別項目になっています。こちらからご覧下さい。

  論理エラー

別項目になっています。こちらからご覧下さい。

  エラーの原因

エラーの原因

原因は大きく分けると3種類。

・コードの問題
・コード以外の問題
・複合的な問題

主な原因はコードの問題

以下、順番にエラーの解決方法を見ていく。
 
 

エラーの原因

コードの問題(実行時エラー、論理エラー、または両方)
コード以外の問題(パソコンの故障など)
複合的な問題
(コードの複数箇所のエラー、コードとコード以外の複合エラーなど)



1、エラーの原因がコードの問題の場合

実行時エラーの場合

Javaランタイムがエラーメッセージを出して、
おおよその原因を教えてくれるので、ある程度解決しやすい。

論理エラーの場合

考え方や作り方が間違っていたり勘違いが原因なので
原因を探すのが難しい場合が多い。

忘れている場合や思い込み。
そもそも、そのやり方を知らない場合もある。

例:計算問題で、掛け算のやり方で間違えてた場合。
 
SESSION 7 で、ことがやった計算の間違え

計算問題
 
計算の答えはいくつ?
(2048 × (1024 + 1024)) - 8658 + 896 × 1024 = ???
 
詳しくはSESSION 7参照
 
 
「掛け算は、足し算引き算よりも先に計算しなければいけない」
 
ことは、この事を忘れていたため、正しい計算ができなかった。
 
掛け算のやり方を忘れてたら、何が間違いの原因か分からない。
論理エラーは、論理的な間違い以外にも、思い込みや
勘違いの場合もあるので原因究明に時間がかかる場合が多い。


コードの問題の例(実行時エラー)
Javaの規定に違反したために起こったエラー
(書式が違う、言語仕様と違っていることをした、など)
Javaの規定の限界を超えたために起こったエラー
(循環関数などでJavaの呼出限界を超えた場合、など)
関数やAPI(ライブラリ)の使い方の間違いによるエラー
(引数の順番を間違えた、など)
変数の使い方の間違いによるエラー
設定の間違いによるエラー
(IDEの設定ファイルやJavaの起動時の引数などの設定ミス)
コードの問題の例(論理エラー)
考え方の間違い
(ロジックやアルゴリズム。処理を実行する順番がおかしいなど)
知識不足
勘違い
忘れている
 
論理エラーによって、実行時エラーが引き起こさている場合など
複合している場合もある。


2、エラーの原因がコード以外の場合

機械が壊れていたり、OSの不具合が原因だったり。
OSやJavaをアップデートした時も注意すること。

つまり、コードを見てるだけじゃ解決しない場合がある。
いろいろ調査する必要がある。
 
コード以外の問題の例
Javaの不具合によるエラー
OSの不具合によるエラー
他のソフト(ライブラリなどを含む)の不具合によるエラー
プログラムの実行環境によるエラー
(ライブラリのバージョンの違いや不足など)
ハードウェアのエラー
(ハードディスクやメモリー、ネットワークカード、物理的な故障や
ドライバーの追加・変更によるものなど)
上記の組み合わせによるエラー
JavaやOSのアップデートやライブラリーの追加・変更、
新たな機器の接続やドライバーの追加・変更など・・・

今まで出ていなかったエラーが
開発環境の変更後に出た場合、注意する必要がある。


3、エラーの原因がエラーの複合の場合

同時に複数のエラーが起きている場合や
別のエラーが原因で、さらに引き起こされているエラー。

実行時エラーのエラーメッセージとは全く別のところが
原因になることもあるので注意。
 
 
複合的な問題の例
2箇所以上のコードのエラーの複合エラー
コードのエラーとライブラリのバージョンの違いによるエラー
OSと開発環境のバージョンの違いによるエラー



エラーの原因の切り分け

どこにエラーの原因があるのか一つ一つ
切り分けて調べていく必要がある。

今後「原因の切り分け方」を覚えていく必要がある

経験の差が出る部分なので焦らないこと。

  デバッグの基本のまとめ


デバッグの基本のまとめ
エラーの種類
実行時エラー
・論理エラー
 
エラーの原因
・コードの問題
・コード以外の問題
・複合的な問題
 
IDEの機能を使う
・エラー表示
ブレークポイント
・変数のウォッチ
・ステップ実行
 

  デバッグのポイント

デバッグ方法のポイント

今まで正常に動いていたものが変更したらおかしくなった場合、
変更箇所に原因の元がある。

改変前と後の違いをよく考えてみること。

変更箇所に「関係する処理」に注目して「問題の整理」をする。
 

デバッグのポイント


改変前のコードと後のコードの違いを考える
変更箇所に関係する処理に注目する
問題を整理する



バグは、時には解明するまで何日もかかる事もあります。

どこに原因があるのか的確な「切り分け」が必要になってきます。
徐々に詳しくなっていきましょう。

 
このページはセッションで使用したプログラミング用語やIT用語の要約です。復習に利用して下さい。

漫画形式の本編はこちら <ゲームを作ろう!>超初心者のためのプログラミング入門
 

広告
home もくじ
  サイト内検索:
広告
お勧めの姉妹サイト
leafdays - リーフデイズ 超初心者のための園芸入門 - 楽しい趣味のガーデニング -