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 コマンドを実行してください。