デバッグ中のデータおよびメッセージの検査と変更
Stateflow® チャートがデバッグ モードにある間、データ、メッセージ、時相論理の式の値を検査してチャートのステータスを調べることができます。また、データ値を変更してローカル メッセージと出力メッセージを送信することにより、チャートの設計をテストすることも可能です。次の表は、これらのデバッグ タスクの実行に使用できるインターフェイスをまとめたものです。詳細については、チャートのデバッグのためのブレークポイントの設定を参照してください。
デバッグ タスク | Stateflow エディター | [シンボル] ペイン | ブレークポイントと監視ウィンドウ | MATLAB® コマンド ウィンドウ |
---|---|---|---|---|
データとメッセージの値の検査 | 可 | 可 | 可 | 可 |
時相論理式の検査 | 可 | 不可 | 不可 | 不可 |
データとメッセージの値の変更 | 不可 | 可 | 不可 | 可 |
メッセージの送信 | 不可 | 不可 | 不可 | 可 |
Stateflow エディターでのデータの表示
シミュレーションがブレークポイントで一時停止している間、チャート内のステート、遷移、または関数にカーソルを合わせてデータの値を調べることができます。選択したオブジェクトが使用しているデータおよびメッセージの値がツールヒントに表示されます。
オブジェクトのタイプ | ツールヒントの情報 |
---|---|
ステートと遷移 | オブジェクトが使用するデータ、メッセージ、時相論理式の値 |
グラフィカル関数、真理値表関数、MATLAB 関数 | 関数のスコープ内におけるローカル データ、メッセージ、入力および出力の値 |
たとえば、次のチャートのブレークポイントは、second
ステートがその during
アクションを評価するときにシミュレーションを一時停止します。スーパーステート gear
にカーソルを合わせると、以下の値を示すツールヒントが表示されます。
時相論理式
duration(speed >= up_threshold)
およびduration(speed <= down_threshold)
。speed
、up_threshold
、up
を含むデータ。
メモ
チャート プロパティ [チャート レベルの関数をエクスポート] および [エクスポートされた関数をグローバルに可視として扱う] を選択した場合、ツールヒントに時相論理データは表示されません。
[シンボル] ペインでのデータの表示と変更
チャートがデバッグ モードにある間、[シンボル] ペインには、チャート内の各データとメッセージ オブジェクトの値が表示されます。たとえば、次のチャートがブレークポイントで一時停止する際、[値] 列ですべてのチャート データの値を確認できます。強調表示されている値は最後のタイム ステップ中に変化したものです。
[シンボル] ペインで、以下の値を変更することができます。
データ ストア メモリのデータ、ローカル データ、および出力データ。
ローカル メッセージと出力メッセージ。
データまたはメッセージ オブジェクトの [値] フィールドをクリックして新しい値を入力します。
シミュレーション中に定数、パラメーター、または入力データの値とメッセージは変更できません。
詳細については、Stateflow エディターでのシンボルの管理を参照してください。
ブレークポイントと監視ウィンドウでのデータの表示
シミュレーションがブレークポイントで一時停止している間に、Stateflow ブレークポイントと監視ウィンドウで現在のデータとメッセージの値を表示することができます。ブレークポイントと監視ウィンドウを開くには、[デバッグ] タブで [ブレークポイント リスト] をクリックします。あるいは、[ブレークポイント] ダイアログ ボックスを開いて [ブレークポイント リスト] リンクをクリックします。
すべてのブレークポイントとそれに関連付けられている条件のリストを表示するには、[ブレークポイント] タブを選択します。詳細については、ブレークポイントと監視ウィンドウを使用したブレークポイントの管理を参照してください。
データとメッセージの値を調べるには、[監視] タブを選択します。
監視リストでのデータの追跡
ブレークポイントと監視ウィンドウを使って以下のことを行えます。
データおよびメッセージ オブジェクトを監視リストに追加。
最後のタイム ステップ以降に変化した値を追跡。
メッセージを展開してメッセージ キューおよびメッセージ データの値を表示。
たとえば、監視リストに speed
、up_threshold
および up
を追加して、シミュレーションのステップ実行中にこれらの値を追跡できます。強調表示は、speed
と up_threshold
の値が最後のタイム ステップ中に変化したことを示します。
データまたはメッセージ オブジェクトを監視リストに追加するには、[プロパティ インスペクター] かモデル エクスプローラーを開きます。監視するデータまたはメッセージ オブジェクトを選択し、[監視ウィンドウに追加] リンクをクリックします。
あるいは、Stateflow エディターで、データやメッセージを使用しているステートまたは遷移を右クリックすることもできます。[監視ウィンドウに追加] を選択して、ドロップダウン リストから変数名を選択します。
監視の表示形式
監視データの表示に使用される形式を変更するには、ウィンドウ上部のギア アイコン を選択します。ドロップダウン リストを使用して各データ型について MATLAB 形式を選択します。
監視リストからのデータの削除
データまたはメッセージ オブジェクトを監視リストから削除するには、監視データのパスにカーソルを合わせ、変数名の左側に表示される [このウォッチを削除] アイコンをクリックします。
監視データの保存と復元
監視データは MATLAB セッションの間存続します。モデルを閉じても、その監視データのリストはブレークポイントと監視ウィンドウに残ります。同じ MATLAB セッション中にモデルを再度開いた場合、そのモデルの監視データのリストが復元されます。
ブレークポイントと監視データのリストを保存して、その後の MATLAB セッションで再度読み込むことができます。ブレークポイントと監視データのリストのスナップショットを保存するには、ブレークポイントと監視ウィンドウの上部で、[現在のブレークポイントと監視の保存] アイコンをクリックします。スナップショットを復元するには、[ブレークポイントと監視の読み込み] アイコンをクリックします。
MATLAB コマンド ウィンドウでのデータの表示と変更
シミュレーションがブレークポイントで一時停止している間、MATLAB コマンド プロンプトが debug>>
に変わります。このプロンプトで、Stateflow データの値の検査と変更、ローカル メッセージと出力メッセージの送信、MATLAB ワークスペースの操作を行うことができます。
たとえば、前のチャートがブレークポイントに到達したとします。現在のスコープで表示可能なデータを表示するには、whos
コマンドを使用します。
whos
Name Size Bytes Class Attributes TWAIT 1x1 1 uint8 down 1x1 1 logical down_th 1x1 8 double down_threshold 1x1 8 double gear 1x1 4 gearType speed 1x1 8 double throttle 1x1 8 double up 1x1 1 logical up_th 1x1 8 double up_threshold 1x1 8 double
speed
と up_threshold
の値を検査するには、次のように入力します。
speed
speed = 26.3383
up_threshold
up_threshold = 41.3601
デバッグ プロンプトを使用したデータの変更
デバッグ プロンプトで、データ ストア メモリのデータ、ローカル データ、および出力データの値を変更できます。たとえば、前のチャートでは up_threshold
、up
および gear
の値を次のように変更できます。
up_threshold = 25;
up = true;
gear = gearType.third;
ベクトルと行列を変更する場合、チャートのアクション言語プロパティに関係なく、インデックス付けには MATLAB 構文を使用します。インデックス表記を参照してください。
たとえば、2 行 2 列の行列
u
の対角の要素を変更するには、次のように入力します。u(1,1) = 6.022e23; u(2,2) = 6.626e-34
可変サイズのデータの次元を変更する場合、新しいサイズは、データに指定された次元の範囲内でなければなりません。たとえば、
v
は、最大サイズが[16 16]
の可変サイズの配列であるとします。v
の値を 5 行 7 列の 1 の配列に変更するには、次のように入力します。v = ones(5,7);
列挙データを変更する場合、接頭辞付きの識別子を使用して列挙型を明示的に指定してください。列挙値の表記法を参照してください。
たとえば、
w
は列挙データ型Colors
をもつとします。w
の値を列挙値Red
に変換するには、次のように入力します。w = Colors.Red
数値データを変更する場合、MATLAB 型変換関数を使用して明示的なデータ型にキャストします。明示的なキャストは
double
型のデータには必要ありません。型キャスト演算を参照してください。たとえば、
x
の型がsingle
、y
の型がint32
、z
の型がfixdt(1,16,12)
であるとします。これらのデータ オブジェクトの値を変更するには、次のように入力します。x = single(98.6); y = int32(100); z = fi(0.5413,1,16,12);
定数、パラメーター、入力データの値をデバッグ プロンプトで変更することはできません。
デバッグ プロンプトを使用したメッセージの送信
デバッグ プロンプトでローカル メッセージや出力メッセージを送信することができます。たとえば、次のチャートでは、ローカル メッセージ M
によってステート DecisionPoint
の後にどのステートがアクティブになるかが決まります。チャートが正の値をもつメッセージ M
を受け取った場合、ステート Received
がアクティブになり、チャートは true
の値を出力します。それ以外の場合、ステート Missed
がアクティブになり、チャートは false
の値を出力します。
メッセージの初期値は 0 です。データ フィールドの値を正の数値に変更してメッセージをそのローカル キューに送信するには、次のように入力します。
M = 5; send(M);
Received
への遷移をトリガーします。詳細については、ブレークポイント後のチャート実行の制御を参照してください。デバッグ プロンプトからメッセージを送信する際は以下の規則に従います。
有効なメッセージのメッセージ データ フィールドの読み取りや書き込みを行うには、メッセージ オブジェクトの名前を使用します。ドット表記構文は使わないでください。
デバッグ プロンプトからメッセージを送信できるのは、チャートが
send
演算子を呼び出してメッセージを明示的に送信する場合のみです。デバッグ プロンプトから入力メッセージを送信することはできません。
詳細については、Stateflow チャート内のメッセージ アクティビティの制御を参照してください。
デバッグ中の MATLAB ワークスペースへのアクセス
デバッグ プロンプトでその他の MATLAB コマンドを入力できますが、その結果は Stateflow ワークスペース内で実行されます。たとえば、次のように関数 save
を使用して、すべてのチャート変数を MAT ファイルに保存できます。
save(chartVars)
MATLAB ベース ワークスペースでコマンドを入力するには、evalin
コマンドを使用して最初の引数を "base"
にします。たとえば、MATLAB ワークスペースで変数をリストするには、次のコマンドを使用します。
evalin("base","whos")