デバッグ
概要
次のセクションでは、FlexScriptのデバッグ方法について説明します。
動作
FlexSimコードエディタ内では、行番号の左側に余白があります。余白をクリックすると、そのコード行にブレイクポイントを追加できます。ブレイクポイントは、余白に として表示されます。ブレイクポイントを削除するには、 をクリックします。ブレイクポイントがあるコード行が実行されると、FlexSimはデバッグモードになります。デバッグ中は、デバッガーツール、ツリーウィンドウ、出力コンソール、限られた数のその他のウィンドウなど、プログラムの特定の領域のみ操作できます。コードウィンドウが変更され、デバッグ用のツールが表示されます。
debug()コマンド
debug()
コマンドは、任意のflexscriptコードに配置できます。これはブレイクポイントのように機能します。モデルが実行されると、モデルを一時停止してデバッグウィンドウを開きます。ただし、ブレイクポイントデバッグが無効になっている場合でもモデルを一時停止します。
このコマンドを使用すると、条件付きブレイクポイントを設定できます。
コントロール
次のコントロールがあります。
- 次の行 - 黄色の矢印は次に実行される行を示します。[次の行]ボタンを押すと、その行が実行され、黄色の矢印がその次に実行されるコード行に移動します。
- ステップイン - このボタンはコード行に特定の関数呼び出しが含まれている場合に使用できます。このボタンを使用すると、関数にステップインし、関数のコードを1行ずつ実行できます。関数が終了すると、デバッガーはその関数を呼び出したコードに戻ります。この方法で追跡できる関数は、nodefunction、executefsnode、カスタムユーザーコマンドだけです。
- 続行 - FlexScriptの実行が別のブレイクポイントに達するまで続行します。現在実行中のコードが終了すると、デバッグモードが終了します。
- シミュレーションクロックを停止 - このボタンを押すと、モデルのシミュレーションクロックが停止します。これはモデルが高速で実行されている場合に特に便利です。そのような場合に[続行]ボタンをクリックすると、FlexSimが続行するとすぐにデバッグモードに戻ってしまうためです。
ブレイクポイント
[ブレイクポイント]ウィンドウは、[デバッグ]メニューから利用できます。これは、モデル内のコードに追加されているブレイクポイントを示すチェックボックス付きのツリービューです。ブレイクポイントを無効にするには、該当する行番号の横にあるチェックボックスをクリックします。すべてのブレイクポイントを無効にするには、[ブレイクポイントデバッグを有効化]チェックボックスをオフにします。これらのチェックボックスのオン/オフは、ブレイクポイントが有効か無効かのみに影響します。ブレイクポイントが実際に削除されるわけではありません。ブレイクポイントを削除するには、このウィンドウで目的のブレイクポイントを強調表示し、Deleteキーを押すか、コードウィンドウ内の をクリックします。無効化されたブレイクポイントは、余白に として表示されます。この場合、FlexScriptの実行がデバッグのために停止することはありません。
ブレイクポイントウィンドウでブレイクポイントを右クリックすると、関連するコードを調べることができます。
ローカル変数
この領域には、ローカルに定義された変数の現在の値が表示されます。コードをステップ実行すると、これらの値がすぐに更新されるため、起こっていることを把握できます。コード内の変数の内容が期待どおりでないためにモデルが正常に動作しないことがよくあります。このウィンドウでは、変数の内容を正確に把握できます。
また、[コード編集]ウィンドウで変数にマウスカーソルを合わせると、その変数の現在の値が表示されます。
変数を監視
この領域では、表示するその他の変数や式を指定できます(グローバル変数など)。[+]ボタンを押すと、テーブルの行数を増やすことができます。[-]ボタンを押すと、テーブル内の最後にクリックした行が削除されます。テーブルのグレーの領域をダブルクリックすると、変数または式を入力できます。その値は右側に表示されます。これは、「if」文で使用されるような特定の条件付きステートメントが期待どおりに動作しない理由を説明するのに役立ちます。また、[ローカル変数]タブに表示されないグローバル変数を表示することもできます。
コールスタック
この領域には、現在のコールスタック(関数呼び出し履歴)が表示されます。直近の呼び出しは常にリストの一番上に表示されます。この場合、OnEntry関数は、OnTimerEvent関数から呼び出されたOnRecieve関数によって呼び出されました。
コールスタックの任意の行を右クリックすると、ツリー内の関連するコードまたはノードを探索できます。
コードプロファイラー
[コードプロファイル]ウィンドウは、モデルで実行されているすべてのFlexScriptコードをプロファイリングします。
次のプロパティがあります。
FlexScriptコードプロファイリングを有効にする
コードプロファイリングを有効にする場合は、このチェックボックスをオンにします。[コードプロファイル]ウィンドウを閉じても、コードプロファイリングは有効のままとなります。
コードプロファイルデータをリセット
現在累積されているプロファイルデータをクリアします。
セルフタイム(ミリ秒)
これは、モデルが開始されてからコードが実行されるのにかかった合計時間(ミリ秒)です。
合計時間(ミリ秒)
これは、コード内のユーザーコマンドなど、他の関数の呼び出しにかかった時間とセルフタイムの合計時間です。
ヒット数
これは、コードが実行された合計回数です。
パス
実行中のFlexScriptノードへのパスです。
イベントリストとイベントログ
イベントリストツールとイベントログツールもデバッグに役立ちます。これらのツールの詳細については、「イベントリスト」と「イベントログ」を参照してください。