デバッグ

プログラムが長くなればなるほど、複雑さが増せば増すほど、期待通りに動作しないことが多くなります。何らかのエラーが出てしまうこともありますし、実行結果がおかしくなってしまうこともあるでしょう。

プログラムの中に隠れている間違いを発見するためには、以下のようなことを行うことになります。

  • 期待通りの順序でプログラムが実行されているかどうか確認する。
  • プログラムが実行された結果、期待通りの数値や文字列、配列が変数に代入されているかどうか確認する。

これらを「デバッグ(する)」と表現します。

Jasmine Tea には、このデバッグを手助けしてくれる機能がいくつか提供されています。ここでは、Jasmine Tea が提供するデバッグ機能について紹介します。

ブレークポイントの指定

Jasmine Tea では、プログラムの実行が「ある行」に来たときに、その行で実行を一時停止することができます。これにより、その行が期待通りに実行されたかどうかを確認することができるようになります。

プログラムのある行を一時停止するように指定したことを「ブレークポイントを指定した」と呼びます。ブレークポイントを指定するには、エディターの「行番号」と「プログラム」の間をクリックまたはタップします。

debug-1

例えば、プログラムの 2 行目の実行の直前でプログラムの実行を一時停止したいときは、エディターの行番号 2 と書かれている場所とその行のプログラムとの間をクリックまたはタップします。

debug-2

黄色で三角形のマークが表示されると共に、2 行目のプログラムの上に点線が表示されます。これにより、2 行目にブレークポイントが指定されます。

ブレークポイントは、プログラムの中でいくつも指定することができます。

debug-3

ブレークポイントを解除して一時停止しないようにするには、黄色の三角形のマークをクリックまたはタップします。

debug-4

ブレークポイントが指定された状態で「実行」ボタンを押してプログラムを実行すると、ブレークポイントが指定された行が実行される直前で、プログラムが一時停止します。そして、自動的に「デバッグ」タブが選択されて画面が切り替わります。

debug-5

上記の画面は、プログラムの 2 行目に指定したブレークポイントにより、プログラムの実行が一時停止したときの Studio 画面です。2 行目の背景に黄色のグラデーションが表示されています。これにより、現在 2 行目で一時停止していることがわかります。

変数に代入された値の表示

ブレークポイントによってプログラムが一時停止したときは、その時点で作成されている変数の一覧が「変数」と書かれた表に一覧表示されます。

debug-6

変数の表では、以下の情報が掲載されます。

  • スコープ - 変数が作成されているスコープの名前が表示される。「MAIN」以外が表示されたときは、プロシージャや関数が実行されているときの変数スコープが表示対象となっている。
  • 変数の種別 - 数値変数、文字列変数、配列変数のどれか。
  • 変数名
  • 代入されている値

上記の画面では、プログラムが実行されて 2 行目の実行の直前で一時停止されているために、作成されている変数は for 命令で作られたループ変数 i のみです。そして、1 回目の繰り返しなので、変数 i には 1 が代入されていることがわかります。

プログラムの実行の再開

一時停止されているプログラムの実行を再開したいときは、エディターの下にある「実行を再開」ボタンを押します。プログラムの実行が再開されると、ブレークポイントが指定された行に到達するまで、プログラムの実行が続きます。

debug-7

上記の画面は、「実行を再開」ボタンを押してプログラムの実行を再開した後に、ブレークポイントによってプログラムの実行が再度一時停止したときの Studio 画面です。

next 命令により 2 回目の繰り返しであることが、ループ変数 i に代入された数値を見ることでわかります。また、他の変数にもそれぞれ random 関数によって決定された数値が代入されていることと、circle 命令の実行によってグラフィック画面に円が描かれたこともわかります。

プログラムの実行中や一時停止のときにもブレークポイントの指定や解除を行うことができます。もう一時停止させなくても良くなったら、ブレークポイントを解除した後に「実行を再開」ボタンを押してプログラムを最後まで実行するなどすると良いでしょう。

一時停止された行のみの実行

デバッグを行っているときは、ブレークポイントを指定して一時停止した後に、1行ずつプログラムを実行して動作を確認したいときがあります。しかし、一時停止させたい行全てにブレークポイントを指定するのは面倒です。

ブレークポイントによって一時停止した行のみを実行して、次の行の実行の前で再び一時停止させたいときは、「選択行を実行」ボタンを押します。

debug-8

上記の画面は、2 行目で一時停止されているときに「選択行を実行」ボタンを押した後の画面です。黄色のグラデーションが 3 行目に描かれていますので、3 行目の実行の直前でプログラムが一時停止していることがわかります。このように、「選択行を実行」ボタンを使うことで、プログラムを1行ずつ実行していくことができます。

ここでは 2 行目だけが実行されていますので、変数 x に代入された数値のみが変化していることがわかります。