Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

ブレークポイントを設定する

ブレークポイントについて

デバッガーを使用して、ブレークポイントと呼ばれるシミュレーション中の停止点を定義することができます。それからブレークポイント間でデバッガーの continue コマンドを使用してシミュレーションをブレークポイントごとに実行できます。デバッガーでは、無条件ブレークポイントと条件付きブレークポイントの 2 つのタイプブレークポイントを定義できます。無条件ブレークポイントは、シミュレーションが前もって指定したブロックまたはタイム ステップに到達したときに生じます。条件付きブレークポイントは、事前に指定した条件がシミュレーションで成立したときに発生します。

ブレークポイントは、プログラムのある特定のポイントで問題が生じることがわかっている場合や、ある条件が生じたときに問題が起こる場合に役に立ちます。適切なブレークポイントを定義し、continue コマンドによってシミュレーションを実行することで、シミュレーション上の問題が生じているポイントまで直ちにスキップできます。

メモ

デバッガーにおいてシミュレーションを MATLAB® S-Function のブレークポイントで停止した場合に、MATLAB を終了するには、まずデバッガーを終了しなければなりません。

ブレークポイントの設定

無条件ブレークポイントは、以下の場所から設定できます。

  • デバッガー ツール バー

  • [シミュレーション ループ] ペイン

  • MATLAB 製品コマンド ウィンドウ (コマンド ライン モードのみ)

デバッガー ツール バーからのブレークポイントの設定

[ブレークポイント] ボタンを有効にするには、次のようにします。

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

  2. simulationPhase が強調表示されるまで、[現在のメソッドを越えてステップ] ボタンをクリックします。

  3. [現在のメソッドにステップ] ボタンをクリックします。

デバッガーは、[ブレークポイント] ペインの [ブレーク/表示ポイント] パネルで選択したブロックの名前を表示します。

メモ:

ツール バーの [ブレークポイント] ボタンを選択すると、ブレークポイントがメジャー タイム ステップのブロックのメソッドの呼び込みに設定されます。

パネルの[ブレークポイント] 列のチェック ボックスをオフにすることで、ブロックのブレークポイントを一時的に使用できないようにできます。ブロックのブレークポイントをクリアし、ペインからエントリを削除するには、

  1. エントリを選択します。

  2. パネルの [選択したポイントの削除] ボタンをクリックします。

メモ:

バーチャル ブロックにおいてブレークポイントは設定できません。バーチャル ブロックは、純粋にグラフィカルであるブロックであり、これは、モデルの計算ブロックでのグループ分けや関係を示します。デバッガーは、バーチャル ブロックでブレークポイントを設定しようとしたときは、警告を表示します。slist コマンドを使用してモデルの非バーチャル ブロックのリストを取得できます (モデルの非バーチャル ブロックの表示を参照)。

[シミュレーション ループ] ペインからブレークポイントを設定

[シミュレーション ループ] ペインで表示されるメソッドの特定の呼び込みでブレークポイントを設定するには、ペインの[ブレークポイント] 列のメソッド名の横のチェック ボックスをオンにします。

ブレークポイントをクリアするには、チェック ボックスをオフにします。

コマンド ウィンドウからのブレークポイントの設定

コマンド ライン モードで、break および bafter コマンドを使用して、それぞれ指定したメソッドの前または後でブレークポイントを設定します。ブレークポイントをクリアするには、clear コマンドを使用します。

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

デバッガーの[ブレークポイント] ペインの [条件でブレーク] コントロール グループ、

または以下のコマンドを使用 (コマンド ライン モードにおいて) して、条件付きブレークポイントを設定できます。

次のコマンド...シミュレーションの停止条件...
tbreak [t]

シミュレーション タイム ステップ

ebreak

モデル内で回復可能なエラー

nanbreak

アンダーフローまたはオーバーフロー (NaN) または無限大 (Inf) の値

xbreak

シミュレーション ステップ サイズを決定する状態にシミュレーションが到達したとき

zcbreak

シミュレーション タイム ステップ間でゼロクロッシングが発生したとき

タイム ステップでブレークポイントを設定

タイム ステップでブレークポイントを設定するには、デバッガーの [ブレーク時間] フィールドで時間を入力するか (GUI モード)、または tbreak コマンドを使用して時間を入力します。これにより、デバッガーは、指定した時間の後の最初のタイム ステップのモデルの Outputs.Major メソッドでシミュレーションを停止します。たとえば、デバッグモードで vdp を起動し、次のコマンドを入力します。

tbreak 2
continue

は、continue コマンドの出力によって示されたようにタイム ステップ 2.078vdp.Outputs.Major メソッドでシミュレーションを停止します。

%----------------------------------------------------------------%
[Tm = 2.034340153847549      ] vdp.Outputs.Minor
(sldebug @37): 

非有限値で停止

デバッガーの [NaN 値] オプションを選択するか、nanbreak コマンドを入力することで、計算値が無限大かシミュレーションを実行するマシンによってサポートされている値の範囲外であるときにシミュレーションを停止させます。このオプションは、モデルの計算エラーを正確に指摘するのに役立ちます。

ステップサイズを制限したステップで停止

[状態でステップサイズを制限] オプションを選択するか、xbreak コマンドを入力すると、デバッガーはモデルが可変ソルバーを使用して、ソルバーがとりうるステップサイズを制限する状態があるときに、シミュレーションを停止します。このコマンドは、多くの解くべきシミュレーション タイム ステップ数を必要とするモデルのデバッグに役立ちます。

ゼロクロッシング検出時に停止

[ゼロクロッシング] オプションを選択するか、zcbreak コマンドを入力すると、ゼロクロッシングが発生するブロックを含むモデル内でサンプリングされていないゼロクロッシングを検出したときに、シミュレーションを停止します。停止した後で、ゼロクロッシングが検出されたブロックの ID、タイプ、および名前が表示されます。ブロック ID (s:b:p) は、コロンで区切られたシステム インデックス (s)、ブロック インデックス (b)、および端子インデックス (p) から構成されます (ブロック IDを参照)。

たとえば、以下のように例モデル zeroxing の実行開始時にゼロクロッシング ブレーク ポイントを設定します。

>> sldebug zeroxing
%--------------------------------------------------------------
%
[TM = 0                      ] zeroxing.Simulate
(sldebug @0): >> zcbreak
Break at zero crossing events              : enabled

そして、シミュレーションを続けると、

(sldebug @0): >> continue

次のところで、ゼロクロッシング ブレークポイントが起こります。

Interrupting model execution before running mdlOutputs at the left post of 
(major time step just before) zero crossing event detected at the following location:
  6[-0]  0:5:2  Saturate  'zeroxing/Saturation'
%----------------------------------------------------------------%
[TzL= 0.3435011087932808     ] zeroxing.Outputs.Major
(sldebug @16): >> 

モデルがサンプリングされていないゼロクロッシングを生成可能なブロックを含まない場合、このコマンドは、この事実を通知するメッセージを表示します。

ソルバー エラーのブレーク

デバッガーの [ソルバー エラー] オプションを選択するか、ebreak コマンドを入力すると、ソルバーがモデル内で回復可能なエラーを検出した場合にシミュレーションが停止します。このブレークポイントを設定しない (無効にした) 場合、ソルバーはエラーからの回復処理を行い、ユーザーには通知せずにシミュレーションを続行します。

関連する例

詳細