Compose-1100:Composeデバッガーでの作業
Tutorial Level: Beginner
チュートリアルCompose-1000では、簡単なOMLスクリプトをComposeで作成、編集、実行する基本的な操作について説明しましたが、Compose-1100ではデバッガーについて説明します。
Composeの起動
Composeが起動します。Editor windowにはデフォルトでUntitled1.omlファイルが表示されています。
デフォルトでは、アプリケーションは、対話形式でスクリプトを編集して実行できるオーサリングモードになっています。

デバッグモードの開始
- ファイルメニューで開くを選択します。
-
ファイルを開くダイアログで、<Installation_dir>/tutorials/ruda-フォルダーの場所を参照します。Demo_debugger.omlファイルを選択して開くをクリックします。
タイトルがsimple_demo.omlであるEditor windowで新しいタブが開きます。このタブがアクティブになり、このファイルがアクティブなファイルであることが示されます。
-
デバッグアイコン
をクリックするか、メニュー項目の を選択します。
これでデバッグモードが有効になります。ツールバー(ステップ)でアクティブな項目が追加され、別のウィンドウが使用できるようになります。このウィンドウとして、Watch window、Call Stack window、Breakpoints windowがあります。これらのウィンドウは、 メニューで必要に応じて表示できます。
- デバッグメニューで、 、 、および を選択します。
ブレークポイントの追加およびファイルのデバッグの開始
-
行番号の左にあるマージンをクリックすることにより、デバッグセッションにブレークポイントを追加します。行番号15にブレークポイントを追加します。
マージンに赤色の円が表示され、ブレークポイントであることが示されます。
-
GUI下部のコールスタックタブの隣にあるブレークポイントタブをクリックします。または、デバッグメニューで を選択します。
ブレークポイントが一覧表示され、行番号15にブレークポイントがあることがわかります。
-
デバッグツールバーでファイルの実行
をクリックするとファイルのデバッグが始まります。
行番号15にブレークポイントがあるので、ファイルの実行が行番号15で停止します。行番号15には、ブレークポイントを示す赤色の円のほか、青色の三角形も表示されます。この青色の三角形は、ここが次に実行する行であることを示しています。
エディターとウォッチウィンドウを使用した変数値の確認
-
Watch windowを使用して変数を確認することもできます。ComposeのGUIの左下隅にWatch windowが表示されています。Editor windowで変数booをクリックして強調表示し、その変数をEditor windowからWatch windowへドラッグします。
booを強調表示してから右クリックし、選択対象をウォッチに追加を選択しても同様の操作が可能です。
現在、booの値は3です。
-
デバッグの間、Variableブラウザには必ず、現在のスコープでの変数値が表示されています。
-
1行進むアイコン
をクリックします。booの値が変化しています。この変化を把握するには、VariableブラウザまたはWatch windowに表示されたbooの値を確認します。
-
次に実行する行を示す青い矢印が、現在は行番号34にあります。1行進む
を使用すると、実行位置が次の行に移動します。
関数の開始およびコールスタックウィンドウの確認
-
関数
foo
を開始するには、関数に入るアイコンをクリックします。
1行進むを選択すると関数
foo
が実行されます。関数foo
に記述された行を1行ずつ個別に実行する場合は、代わりに関数に入るを選択します。関数に入るを選択している場合は、青い三角形が行番号20に移動します。
-
Call Stack windowタブをクリックします。Call Stack windowに表示された内容を確認します。現在の実行ポイント(行番号20)と関数
foo
の呼び出しポイント(行番号34)が列挙されています。
変数ブラウザとウォッチウィンドウを使用した、関数内部での変数の確認
-
1行進む
をクリックしながら一度に1行ずつ、行番号23に達するまで実行します。
-
Variableブラウザの値列で、次のようにmatとxの値を確認します。
-
1行進む
をさらにクリックしながら、行番号26に達するまで実行します。
-
Watch windowの名前列で、変数名celを入力します。
Watch windowで、変数celの内容が更新されます。タイプ列には、変数celが3つの要素を持つセルであることが示されます。これらの値が値列に表示されています。次のように、OMLのCommand Windowでcelと入力して、これらの要素の値を確認することもできます。
-
再度1行進む
をクリックして、行番号29に達するまで実行します。
-
このスクリプトの行番号30では、struのnameが‘
Bob
’から‘Lily
’に再設定されます。それに応じて、この構造体のnameフィールドが更新されます。 -
行番号29を実行した後、Variableブラウザでこの構造体の前に表示された‘+’をクリックすることで、struの各フィールドを表示できます。この構造体が展開され、その内容を確認できます。
-
をクリックして、次のようにnameフィールドを確認します。
-
デバッグツールバーで関数から出るアイコン
をクリックすると、関数の残りの行が実行され、1回のステップで関数の実行が終了します。実行パスの中で、次の実行ポイントである行番号37にマーカーが移動します。
デバッグツールバーの次のブレークポイントまで進むの使用
- 下方にスクロールして行番号37にカーソルを移動します。
-
デバッグステップツールバーで、次のブレークポイントまで進む
をクリックします。
以降の行が実行されて、カーソルを置いた行で停止します。行にブレークポイントを設定すると毎回そこで実行が停止するので、それが都合が悪い場合はこの機能が便利です。次のブレークポイントまで進むを使用すると、この行で1回だけ実行が停止します。
- Watch windowタブをクリックしてアクティブにします。
-
Watch windowの中を右クリックしてすべて削除を選択します。すべてのエントリを削除してもいいか確認を求めるメッセージに対してはいを選択します。
Watch windowがクリアされ、目的の変数を扱うことができる空白の表示になります。
- Watch windowで変数aを入力します。その現在の値を記録しておきます。
-
for loop
の中で1行進むをクリックするたびに、Watch windowでこの変数の値が大きくなることがわかります。
ブレークポイントへの条件の追加
-
行番号39の左マージンをクリックしてブレークポイントを追加します。そのブレークポイントを右クリックしてConditionを選択します。
ブレーク条件を指定するダイアログボックスが開きます。
-
a == 5
と入力してOKをクリックします。 -
ファイルの実行アイコン
をクリックすると、設定したブレークポイントで停止するまで実行が継続します。Watch windowで上記の条件が成立したときにのみ、このように実行が停止します。
別のブレークポイントの追加、zoo関数の開始、およびコールスタックウィンドウの確認
- 行番号53に別のブレークポイントを追加します。
-
ファイルの実行
をクリックすると残りのコードが実行されますが、ブレークポイントがある行番号53で実行が停止します。
-
行番号53では関数zooが呼び出され、引数10が渡されます。関数に入る
をクリックすると関数zooの実行が始まり、この関数の先頭行に実行ポイントが移動します。
-
1行進む
を2回クリックして行番号50に移動します(行番号50では関数fooが呼び出されます)。
-
関数に入る
をクリックすると関数fooの実行が始まり、この関数の先頭行に実行ポイントが移動します。その結果、次の実行ポイントを示すマーカーが行番号20に移動します。Call Stack windowを確認します。ここには、現在のマーカー位置までのすべての関数を含めた実行パスが表示されます。その先頭には、現在の実行位置である最も内側の呼び出しレベルにある関数(foo関数)が表示され、その外側のレベルにある関数(zoo関数)が次に表示されます。その次にはmain関数のレベルが表示されます。
エディターのマージンには、これら各関数の呼び出し位置が青いマーカーで示されます。これらの行は、Call Stack windowの2番目の列にも表示されます。これにより、関数呼び出しのインスタンスが複数存在する場合に、どのインスタンスを経て現在の実行位置に到達しているかを知ることができます。
- この呼び出しインスタンスでの変数値を確認することもできます。Watch windowに変数を追加できるほか、確認が必要な変数についてはVariableブラウザでその値を確認できます。
デバッグの中止とデバッグモードの終了
-
デバッグツールバーでデバッグの中止
をクリックして現在の実行を中止します。
-
デバッグアイコン
をクリックしてデバッグモードを終了します。
- ComposeのGUIがオーサリングモードに戻ります。ここから任意のオーサリングモードの操作を継続できます。