5 ブレークポイント2

ブレークポイント1では、「キーボード入力」でご紹介したmyKeyCheckプログラムでブレークポイントを使う方法を説明しましたが、今回はScreenコマンドを使用したプログラムでのブレークポイントの使い方についてご説明します。

今回は「1つの円」でご紹介したプログラムを使ってブレークポイントの使い方を練習しましょう。

Screenコマンドを使ったプログラムでブレークポイントを使う際にもっとも注意すべきことは、フルスクリーンモードにしないということです。フルスクリーンモードではフリーズして、強制終了しなくてはいけなくなります。

具体的には、

[windowPtr, windowRect]=Screen('OpenWindow', screenNumber, [255 255 255]);

とせずに、

[windowPtr, windowRect]=Screen('OpenWindow', screenNumber, [255 255 255], [100, 200, 700, 600]);

とするということです。第4引数がウィンドウのサイズで、上の例ですと、幅が600 (=700-100)、高さが400 (=600-100) のウィンドウが、画面の左上の座標を(0, 0)としたときに、(100, 200)の場所に呈示されます。

ではブレークポイントを設定しましょう。

escapeKey=KbName('esc');

のところにブレークポイントを設定してください。

実行ボタンを押します。

ウィンドウが表示されましたでしょうか。

表示されたら、最小化ボタンを押します。

そしてMatlabのエディタ上で、プログラムがescapeKey=KbName('esc');のところで停止していることを確認してください。(緑の矢印が出ているはずです)

実行ボタンの右側にある「ステップ」をクリックすると、緑の矢印が1行ずつ下にいきます。これは1行ずつ実行しているという意味です。

何回かステップを押したら、エディタからMatlabのコマンドウィンドウに切り替えてみましょう。

K >>

というのが表示されていたら、試しに何かキーを押してみてください。おそらくキー入力しても画面に何も表示されないと思います。

これはプログラムで

ListenChar(2);

を呼び出しているからです。

Ctrlキーを押しながら、Cを押してください。キー入力が有効になります。

ではescと入力してTabキーを押してください。escakeKeyと補完されると思います。

escapeKeyと入力して、エンターを押すと、私の環境では27が返ってきます。

これはエスケープキーにはキーコードの27が割り当てられていることを示しています。

このようにブレークポイントを使用すると、プログラムの途中での変数の値を確認したりすることができます。

ブレークポイントでの実行を停止するには、エディタに戻って、実行ボタンの右側にある「継続」「デバッグモードの終了」というのをクリックしてください。

「デバッグモードの終了」をクリックしたときには注意が必要で、プログラムの強制終了となるため、必須の終了処理(例えば、Screen('CloseAll') など)が実行されません。

このときはコマンドウィンドウに移って、Screen('CloseAll')、または sca コマンドを実行してください。