Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

MATLAB Function ブロックのデバッグ

シミュレーション中の関数のデバッグ

MATLAB Function ブロックを使用したカスタム機能の作成で、一連の入力値の平均と標準偏差を計算する MATLAB Function ブロックでモデル例を作成しました。ソフトウェアにより、ブレークポイント設定時の MATLAB Function のデバッグが有効になります。

このモデルで MATLAB Function をデバッグするには、以下の操作を実行します。

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

  2. MATLAB Function ブロック エディター内で、以下の行の左側の余白に表示されるダッシュ (-) をクリックします。

    len = length(vals);

    行の余白にブレークポイントを示す赤い点が表示されます。

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

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

  4. ツール バーで、[ステップ] をクリックして実行を進めます。

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

  5. ツール バーで、[ステップ イン] をクリックします。

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

  6. [ステップ] をクリックすると、ローカル関数 avg 内の唯一の行が実行されます。ローカル関数 avg の実行が完了すると、緑色の下向き矢印が関数の最後の行の下に表示されます。

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

    実行は、ローカル関数 avg への呼び出し後の行に進みます。

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

    MATLAB® でプロットの関数が実行されます。

    MATLAB Function ブロック エディターで、緑色の矢印が最後のコード行の下で下向きになり、関数 stats が完了したことを示します。

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

    mean および stdev の計算値が Display ブロックに表示されます。

  10. MATLAB Function ブロック エディターで [デバッグの終了] を選択し、シミュレーションを停止します。

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

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

既存のブレークポイントで条件を追加または変更するには、ブレークポイントを右クリックし、[条件の設定/変更] を選択します。また、これらの操作は [ブレークポイント] メニューでも実行できます。

シミュレーション中に関数内の変数の値を監視する方法

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

対話型表示を使用した値の監視

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

  1. MATLAB Function ブロック エディターで、変数テキストにマウス カーソルを合わせて、ポップアップ表示を確認します。

    たとえば、変数 len をシミュレーション中に監視するには、マウス カーソルをコードの中のテキスト len の上に置きます。次の図のようにカーソルの隣に len の値が表示されます。

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

シミュレーション中にコマンド ライン デバッガー ユーティリティを使用して、関数の変数の値を MATLAB ウィンドウにレポートできます。ブレークポイントに達すると、コマンド ライン デバッガーのプロンプト debug>> が表示されます。このプロンプト行で、次のように変数名を入力すると、MATLAB Function ブロック用に定義された変数の値を確認することができます。

debug>> stdev
 
	1.1180

debug>> 

コマンド ライン デバッガーでは、シミュレーション中に次のコマンドも使用できます。

コマンド説明

ctrl-c

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

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 コマンドを発行できますが、結果として MATLAB Function ブロックのワークスペース内で実行されることになります。debug>> プロンプトで MATLAB ベース ワークスペース内のコマンドを実行するには、evalin コマンドを使用し、evalin('base','whos') のように最初の引数 'base' に続いて 2 番目の引数コマンドを指定します。MATLAB ベース ワークスペースに戻るには、dbquit コマンドを使用します。

表示サイズの制限

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

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

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

範囲の指定

入力と出力のデータ範囲を指定するには、次の手順に従います。

  1. [端子とデータの管理] で、対象となる入力と出力を選択します。

    [データ プロパティ] ダイアログ ボックスが開きます。

  2. データ プロパティのダイアログ ボックスで、[一般] プロパティの設定で説明されているように、[一般] タブを選択して値の範囲を入力します。

デバッグ ツール

MATLAB Function ブロックのデバッグ セッションでは以下のツールを使用できます。

ツール ボタン説明ショートカット キー

ビルド

このツールには、[エディター] タブから [モデルのビルド][ビルド] を選択することでアクセスできます。

MATLAB Function ブロックのエラーをチェックし、エラーが検出されなかった場合は、その関数を含むモデルのシミュレーション アプリケーションをビルドします。

Ctrl+B

ブロック線図の更新

このツールには、[エディター] タブから [モデルのビルド][ブロック線図の更新] を選択することでアクセスできます。

MATLAB Function ブロックに対して加えた最新の変更事項に基づいて間違いがないか確認します。

Ctrl+D

端子の更新

このツールには、[エディター] タブから [モデルのビルド][端子の更新] を選択することでアクセスできます。

MATLAB Function ブロック エディターを閉じずに、関数の引数や戻り値の最新の変更が反映されるように MATLAB Function ブロックの端子を更新します。

Ctrl + Shift + A

モデルの実行

その MATLAB Function ブロックを含むモデルのシミュレーションを開始します。実行がブレークポイントで止まる場合は、デバッグを続行します。

F5

モデルの停止

その MATLAB Function ブロックを含むモデルのシミュレーションを停止します。実行がブレークポイントで止まっている場合は、[エディター] タブの [デバッグ モードの終了] を選択します。

Shift+F5

設定/クリア

このツールにアクセスするには、[ブレークポイント][設定/クリア] を選択します。

MATLAB Function ブロックで選択されているコード行に新しいブレークポイントを設定したり、設定されているブレークポイントをクリアしたりします。テキスト カーソルがある行またはテキストが強調表示になっている行が選択されている行です。ブレークポイント インジケーター が、選択されている行に表示されます。

行番号の隣にあるハイフン文字 (-) をクリックすることもできます。ハイフンの代わりにブレークポイント インジケーターが表示されます。ブレークポイントをクリアするには、ブレークポイント インジケーターをクリックします。

F12

有効/無効

このツールにアクセスするには、[ブレークポイント][有効/無効] を選択します。

MATLAB Function ブロックで選択されているコード行で既存のブレークポイントを有効または無効にします。ブレークポイントが無効の場合、選択されている行にインジケーター が表示されます。

なし

条件設定

このツールにアクセスするには、[ブレークポイント][条件設定] を選択します。

MATLAB Function ブロックの選択されたコード行でブレークポイントに条件を設定します。ブレークポイントに条件が関連付けられている場合、選択されている行にインジケーター が表示されます。

 

すべてクリア

このツールにアクセスするには、[ブレークポイント][すべてクリア] を選択します。

その MATLAB Function ブロック コード内のすべてのブレークポイントをクリアします。

なし

ステップ

MATLAB Function ブロック内のコードの次の行をステップ実行します。このツールは、関数呼び出しを実行して先へ進みますが、呼び出された関数内の 1 行ごとの実行はしません。このツールを使用できるのは、ブレークポイントで実行が停止した後だけです。

F10

ステップ イン

MATLAB Function ブロック内のコードの次の行をステップ実行します。行がローカル関数を呼び出す場合、そのローカル関数の最初の行にステップ インします。このツールを使用できるのは、ブレークポイントで実行が停止した後だけです。

F11

ステップ アウト

現在の関数またはローカル関数の 1 行ずつの実行モードからステップ アウトします。ローカル関数内にいる場合は、そのローカル関数の呼び出しを行った行の次の行まで進みます。このツールを使用できるのは、ブレークポイントで実行が停止した後だけです。

Shift+F11

続行

ブレークポイントでの停止など、一時停止した後にデバッグを継続します。このツールを使用できるのは、ブレークポイントで実行が停止した後だけです。

F5

デバッグの終了

デバッグ モードを終了します。このツールを使用できるのは、ブレークポイントで実行が停止した後だけです。

Shift+F5

関連するトピック