MATLAB Function ブロックのデバッグ
MATLAB Function ブロック エディターを使用して MATLAB Function ブロック コードをデバッグできます。MATLAB Function ブロック エディターには、MATLAB® エディターと同じデバッグ ツールがいくつかあります。MATLAB Function ブロック コードをデバッグするには、ブレークポイントを少なくとも 1 つ設定してシミュレーションを実行します。
サンプル関数のデバッグ
この例では、Simulink での MATLAB Function ブロックを使用した MATLAB 関数の実装で作成したモデル call_stats_block2
を使用します。このモデルの MATLAB Function ブロック コードをデバッグするには、以下の操作を実行します。
call_stats_block2
モデルを開きます。MATLAB Function ブロックをダブルクリックしてエディターを開きます。MATLAB Function ブロック エディターで、行の左にある行番号をクリックします。
len = length(vals);
行番号が赤色で強調表示されます。これはブレークポイントを示します。
モデルのシミュレーションを実行します。
シミュレーションはブレークポイントに達した時点で実行が一時停止します。シミュレーションが一時停止した場所が緑色の矢印で示されます。
[関数] タブで、[ステップ オーバー] をクリックして実行を進めます。
実行が
stats
の次の行に進み、これがローカル関数avg
を呼び出します。[関数] タブで、[ステップ イン] をクリックします。
実行がローカル関数
avg
に進みます。一度ローカル関数に入ると、[ステップ オーバー] コマンドまたは [ステップ イン] コマンドを使用して、実行を進めることができます。ローカル関数が別のローカル関数を呼び出す場合は、[ステップ イン] を使用してそこに入ります。ローカル関数の残りの行を実行するには、[ステップ アウト] を使用します。[ステップ オーバー] をクリックすると、
avg
内の唯一の行が実行されます。[ステップ オーバー] をクリックして、関数
stats
に戻ります。実行は、
avg
への呼び出し後の行に進みます。[ステップ オーバー] を 2 回クリックして
stdev
を計算し、関数plot
を実行します。MATLAB で関数
plot
が実行されます。[続行] をクリックして、モデルの実行を続けます。
モデルに戻ると、
mean
およびstdev
の計算値が Display ブロックに表示されます。MATLAB Function ブロック エディターで [停止] をクリックし、シミュレーションを停止します。
メモ
MATLAB Function ブロックのデバッグは、ノーマル モードとアクセラレータ モードで実行できます。ただし、モデル参照で MATLAB Function ブロックを使用するモデルのシミュレーションをアクセラレータ モードで実行する場合、親モデルのシミュレーションではブレークポイントは無視されます。
ブレークポイントへの条件の設定
MATLAB Function ブロック内のブレークポイントで条件として MATLAB 式を入力できます。シミュレーションは、条件が真のときのみそのブレークポイントで一時停止します。条件付きのブレークポイントを設定するには、MATLAB Function ブロック エディターで、コードの行の左にある行番号を右クリックして [条件付きブレークポイントの設定] を選択し、ダイアログ ボックスで条件を入力します。任意の有効な MATLAB 式を条件として使用できます。この式には、ブレークポイントで範囲内にある数値と任意のデータを含めることができます。
既存のブレークポイントで条件を追加または変更するには、ブレークポイントを右クリックし、[条件の設定/変更] を選択します。
シミュレーションにおける関数の変数の監視
MATLAB Function ブロックのシミュレーション中に、各種のツールを使用して関数の変数の値を追跡できます。
コード内の関数の変数の監視
シミュレーション中にコード内の MATLAB Function ブロックの関数に含まれる変数の値を表示するには、以下の操作を実行します。
MATLAB Function ブロック エディターにブレークポイントを追加します。
モデルを実行します。
シミュレーションが一時停止したら、変数の名前をポイントします。ツールヒントに現在の変数の値が表示されます。
たとえば、変数
stdev
をシミュレーション中に監視するには、コード内のlen
をポイントします。
[シンボル] ペインでの関数の変数の監視
シミュレーション中に MATLAB Function ブロックの [シンボル] ペインの変数の値を表示するには、以下の操作を実行します。
[シンボル] ペインを開きます。[関数] タブで、[データの編集] をクリックします。
MATLAB Function ブロック エディターにブレークポイントを追加します。
モデルを実行します。
シミュレーションが一時停止すると、ブレークポイントでの値で [シンボル] ペインが更新されます。変数が配列の場合、[値] 列に変数の次元とデータ型が表示されます。[値] 列をポイントすると、値が表示されます。
たとえば、変数
vals
をシミュレーション中に表示するには、[値] 列のvals
の値をポイントします。
コマンド ライン デバッガーを使用した関数の変数の監視
シミュレーション中にコマンド ウィンドウで関数の変数の値を確認できます。ブレークポイントに達したら、値を確認する変数の名前を debug>>
プロンプトで入力します。
debug>> stdev 1.1180 debug>>
コマンド ウィンドウでは、デバッグ中に次のコマンドも入力できます。
コマンド | 説明 |
---|---|
| 次のブレークポイントまで実行を続けます。 |
| デバッグを停止してシミュレーションを終了します。 |
| ブレークポイントに達した後、プログラムの次のステップへ進みます。MATLAB ローカル関数をステップ オーバーまたはステップ イン/アウトします。 |
| コマンド ラインのデバッグのヘルプを表示します。 |
| 現在のスコープ内の変数 |
| 現在のスコープ内のすべての変数を指定したファイルに保存します。MATLAB |
| 現在のスコープ内にある変数の場合は、 |
| 現在のスコープ内の変数を表示します。 |
| 現在のスコープ内のすべての変数のサイズとクラス (データ型) を表示します。 |
debug>>
プロンプトでその他のコマンドを入力すると、結果として MATLAB Function ブロックのワークスペース内で実行されることになります。MATLAB ベース ワークスペース内のコマンドを実行するには、evalin
コマンドを使用し、evalin("base","whos")
のように最初の引数 "base"
に続いて 2 番目の引数コマンドを指定します。debug>>
プロンプトで変数を定義または変更することはできません。
表示サイズの制限
MATLAB Function ブロック エディターでは、2 次元および 200
要素を超える行列の内容は表示されません。これらの制限を超える行列の場合、MATLAB Function ブロック エディターは形状と基本データ型のみを表示します。
データ範囲違反のチェック
MATLAB Function ブロックは、入力値または出力値がブロックに出入りするときにデータ範囲違反がないか入力と出力をチェックします。データ範囲違反のチェックを有効にするには、[コンフィギュレーション パラメーター] ウィンドウを開き、[診断] 、 [データ有効性] をクリックして、[シミュレーション範囲のチェック] を error
または warning
に設定します。
データ範囲の指定
入力変数と出力変数の範囲を指定するには、MATLAB Function ブロック エディターで以下を実行します。
[シンボル] ペインで、目的の変数をクリックします。
プロパティ インスペクターの [プロパティ] タブで、[最小値] と [最大値] に目的の値を入力して [制限範囲] プロパティを調整します。
Initialize Function および Terminate Function ブロック内の MATLAB Function ブロックのデバッグ
Initialize Function ブロックまたは Terminate Function ブロック内で MATLAB Function ブロックを使用している場合、[デバッグ コード] セクションのボタンを使用してブレークポイント間を移動することはできません。コマンド ライン デバッガーまたは行番号のコンテキスト メニュー オプションを使用する必要があります。
行番号のコンテキスト メニューを使用するには、MATLAB Function ブロック エディターで、ブレークポイントを追加し、シミュレーションを実行します。シミュレーション中にブレークポイント後の任意の行番号を右クリックして、[ここまで続行] をクリックします。