Main Content

MATLAB Function ブロックのデバッグ

MATLAB Function ブロック エディターを使用して MATLAB Function ブロック コードをデバッグできます。MATLAB Function ブロック エディターには、MATLAB® エディターと同じデバッグ ツールがいくつかあります。MATLAB Function ブロック コードをデバッグするには、ブレークポイントを少なくとも 1 つ設定してシミュレーションを実行します。

サンプル関数のデバッグ

この例では、Simulink での MATLAB Function ブロックを使用した MATLAB 関数の実装で作成したモデル call_stats_block2 を使用します。このモデルの MATLAB Function ブロック コードをデバッグするには、以下の操作を実行します。

  1. call_stats_block2 モデルを開きます。MATLAB Function ブロックをダブルクリックしてエディターを開きます。

  2. MATLAB Function ブロック エディターで、行の左にある行番号をクリックします。

    len = length(vals);

    行番号が赤色で強調表示されます。これはブレークポイントを示します。

    MATLAB function code with a breakpoint set on the line 7.

  3. モデルのシミュレーションを実行します。

    シミュレーションはブレークポイントに達した時点で実行が一時停止します。シミュレーションが一時停止した場所が緑色の矢印で示されます。

    This image shows the debugging breakpoint and where the execution paused with the highlighted line.

  4. [関数] タブで、[ステップ オーバー] をクリックして実行を進めます。

    実行が stats の次の行に進み、これがローカル関数 avg を呼び出します。

  5. [関数] タブで、[ステップ イン] をクリックします。

    実行がローカル関数 avg に進みます。一度ローカル関数に入ると、[ステップ オーバー] コマンドまたは [ステップ イン] コマンドを使用して、実行を進めることができます。ローカル関数が別のローカル関数を呼び出す場合は、[ステップ イン] を使用してそこに入ります。ローカル関数の残りの行を実行するには、[ステップ アウト] を使用します。

  6. [ステップ オーバー] をクリックすると、avg 内の唯一の行が実行されます。

  7. [ステップ オーバー] をクリックして、関数 stats に戻ります。

    実行は、avg への呼び出し後の行に進みます。

  8. [ステップ オーバー] を 2 回クリックして stdev を計算し、関数 plot を実行します。

    MATLAB で関数 plot が実行されます。

    This shows a plot of the input values and a line drawn through the values.

  9. [続行] をクリックして、モデルの実行を続けます。

    モデルに戻ると、mean および stdev の計算値が Display ブロックに表示されます。

  10. MATLAB Function ブロック エディター[停止] をクリックし、シミュレーションを停止します。

メモ

MATLAB Function ブロックのデバッグは、ノーマル モードとアクセラレータ モードで実行できます。ただし、モデル参照で MATLAB Function ブロックを使用するモデルのシミュレーションをアクセラレータ モードで実行する場合、親モデルのシミュレーションではブレークポイントは無視されます。

ブレークポイントへの条件の設定

MATLAB Function ブロック内のブレークポイントで条件として MATLAB 式を入力できます。シミュレーションは、条件が真のときのみそのブレークポイントで一時停止します。条件付きのブレークポイントを設定するには、MATLAB Function ブロック エディターで、コードの行の左にある行番号を右クリックして [条件付きブレークポイントの設定] を選択し、ダイアログ ボックスで条件を入力します。任意の有効な MATLAB 式を条件として使用できます。この式には、ブレークポイントで範囲内にある数値と任意のデータを含めることができます。

既存のブレークポイントで条件を追加または変更するには、ブレークポイントを右クリックし、[条件の設定/変更] を選択します。

シミュレーションにおける関数の変数の監視

MATLAB Function ブロックのシミュレーション中に、各種のツールを使用して関数の変数の値を追跡できます。

コード内の関数の変数の監視

シミュレーション中にコード内の MATLAB Function ブロックの関数に含まれる変数の値を表示するには、以下の操作を実行します。

  1. MATLAB Function ブロック エディターにブレークポイントを追加します。

  2. モデルを実行します。

  3. シミュレーションが一時停止したら、変数の名前をポイントします。ツールヒントに現在の変数の値が表示されます。

    たとえば、変数 stdev をシミュレーション中に監視するには、コード内の len をポイントします。

    The cursor points to the variable len, and the value of the variable populates during simulation.

[シンボル] ペインでの関数の変数の監視

シミュレーション中に MATLAB Function ブロックの [シンボル] ペインの変数の値を表示するには、以下の操作を実行します。

  1. [シンボル] ペインを開きます。[関数] タブで、[データの編集] をクリックします。

  2. MATLAB Function ブロック エディターにブレークポイントを追加します。

  3. モデルを実行します。

  4. シミュレーションが一時停止すると、ブレークポイントでの値で [シンボル] ペインが更新されます。変数が配列の場合、[値] 列に変数の次元とデータ型が表示されます。[値] 列をポイントすると、値が表示されます。

    たとえば、変数 vals をシミュレーション中に表示するには、[値] 列の vals の値をポイントします。

    The cursor points to the variable vals, and the value of the variable populates during simulation.

コマンド ライン デバッガーを使用した関数の変数の監視

シミュレーション中にコマンド ウィンドウで関数の変数の値を確認できます。ブレークポイントに達したら、値を確認する変数の名前を debug>> プロンプトで入力します。

debug>> stdev
 
	1.1180

debug>> 

コマンド ウィンドウでは、デバッグ中に次のコマンドも入力できます。

コマンド説明

dbcont

次のブレークポイントまで実行を続けます。

dbquit

デバッグを停止してシミュレーションを終了します。

dbstep [in|out]

ブレークポイントに達した後、プログラムの次のステップへ進みます。MATLAB ローカル関数をステップ オーバーまたはステップ イン/アウトします。

help

コマンド ラインのデバッグのヘルプを表示します。

print <var>

現在のスコープ内の変数 var の値を表示します。var がベクトルか行列の場合は、var のインデックスも指定することができます。たとえば、var(1,2) のようになります。

save

現在のスコープ内のすべての変数を指定したファイルに保存します。MATLAB save コマンドの構文に従います。MATLAB ベース ワークスペースから変数を取得するには、シミュレーションの完了後に load コマンドを使用します。

<var>

現在のスコープ内にある変数の場合は、print <var> と同じです。

who

現在のスコープ内の変数を表示します。

whos

現在のスコープ内のすべての変数のサイズとクラス (データ型) を表示します。

debug>> プロンプトでその他のコマンドを入力すると、結果として MATLAB Function ブロックのワークスペース内で実行されることになります。MATLAB ベース ワークスペース内のコマンドを実行するには、evalin コマンドを使用し、evalin("base","whos") のように最初の引数 "base" に続いて 2 番目の引数コマンドを指定します。debug>> プロンプトで変数を定義または変更することはできません。

表示サイズの制限

MATLAB Function ブロック エディターでは、2 次元および 200 要素を超える行列の内容は表示されません。これらの制限を超える行列の場合、MATLAB Function ブロック エディターは形状と基本データ型のみを表示します。

データ範囲違反のチェック

MATLAB Function ブロックは、入力値または出力値がブロックに出入りするときにデータ範囲違反がないか入力と出力をチェックします。データ範囲違反のチェックを有効にするには、[コンフィギュレーション パラメーター] ウィンドウを開き、[診断][データ有効性] をクリックして、[シミュレーション範囲のチェック]error または warning に設定します。

データ範囲の指定

入力変数と出力変数の範囲を指定するには、MATLAB Function ブロック エディターで以下を実行します。

  1. [シンボル] ペインで、目的の変数をクリックします。

  2. プロパティ インスペクターの [プロパティ] タブで、[最小値][最大値] に目的の値を入力して [制限範囲] プロパティを調整します。

Initialize Function および Terminate Function ブロック内の MATLAB Function ブロックのデバッグ

Initialize Function ブロックまたは Terminate Function ブロック内で MATLAB Function ブロックを使用している場合、[デバッグ コード] セクションのボタンを使用してブレークポイント間を移動することはできません。コマンド ライン デバッガーまたは行番号のコンテキスト メニュー オプションを使用する必要があります。

行番号のコンテキスト メニューを使用するには、MATLAB Function ブロック エディターで、ブレークポイントを追加し、シミュレーションを実行します。シミュレーション中にブレークポイント後の任意の行番号を右クリックして、[ここまで続行] をクリックします。

this image shows the line number context menu that appears when you debug a MATLAB Function block. The additional debugging options include Step Over, Step In, Step Out, Continue, and Stop

参考

関連するトピック