ドキュメンテーション

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

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

ブレークポイントを設定すると MATLAB® プログラムの実行が一時停止し、問題があると思われる箇所の値を調べることができます。ブレークポイントは、エディターを使用して設定したり、コマンド ウィンドウで関数を使用したりして設定できます。

3 種類のブレークポイントがあります。

  • 標準ブレークポイント

  • 条件付きブレークポイント

  • エラー ブレークポイント

ブレークポイントは、現在のフォルダーまたは検索パス上のフォルダーに保存したファイルの実行可能な行にのみ設定することができます。ブレークポイントは、MATLAB がアイドル状態でも、ファイル実行中のビジー状態でも、いつでも設定できます。

既定では、MATLAB はブレークポイントに到達すると自動的にファイルを開きます。このオプションを無効にするには、次のようにします。

  1. [ホーム] タブで、[環境] セクションの [設定] をクリックします。

    [設定] ダイアログ ボックスが開きます。

  2. [MATLAB][エディター/デバッガー] を選択します。

  3. [MATLAB がブレークポイントに達したらファイルを自動的に開く] オプションをオフにして、[OK] をクリックします。

標準ブレークポイント

標準ブレークポイントでは、ファイルの特定の行で一時停止します。

標準ブレークポイントを設定するには、ブレークポイントを設定する実行可能な行のブレークポイント アレーをクリックします。ブレークポイント アレーとは、エディターの左側にある幅の狭い列で、行番号の右に表示されます。実行可能行は、ブレークポイント アレー内に — (ダッシュ) で示されます。実行可能ステートメントが複数行にわたる場合、追加行のブレークポイント アレーに — (ダッシュ) が表示されていなくても、そのステートメントの各行にブレークポイントを設定できます。次のコード例では、4 行すべてにブレークポイントを設定できます。

コメント行や空行などの実行可能ではない行にブレークポイントを設定しようとすると、MATLAB によって次の実行可能な行にブレークポイントが設定されます。

標準ブレークポイントは、関数 dbstop を使用することでプログラム的に設定することもできます。たとえば、myprogram.m という名前のファイル内の 2 行目にブレークポイントを追加するには、以下を入力します。

dbstop in myprogram at 2
MATLAB により、関数 myprogram の 2 行目にブレークポイントが追加されます。

for ループ内のインクリメント値を調べるには、ブレークポイントをループの開始点ではなくループ内に設定します。for ループの開始点にブレークポイントを設定してファイルをステップ実行すると、MATLAB は for ステートメントで 1 回のみ一時停止します。一方、ブレークポイントをループ内に設定すると、MATLAB は 1 回ループするたびに一時停止します。

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

条件付きブレークポイントでは、指定された条件が満たされたときのみファイル内の指定行で MATLAB が一時停止します。条件付きブレークポイントは、ループ内で数回の反復が行われた後の結果を確認する場合に使用します。

条件付きブレークポイントを設定するには、ブレークポイントを設定する実行可能な行のブレークポイント アレーを右クリックし、[条件の設定/変更] を選択します。

[エディター] ダイアログ ボックスが開いたら、条件を入力して [OK] をクリックします。条件は、論理スカラー値を返す任意の有効な MATLAB 式です。

ダイアログ ボックスに記載されているとおり、MATLAB は行を実行する前に条件を評価します。たとえば、myprogram.m という名前のファイルがあるとします。

6 行目に次の条件のブレークポイントを追加します。

n >= 4
黄色の条件付きブレークポイント アイコンがその行のブレークポイント アレーに表示されます。

条件付きブレークポイントは、関数 dbstop を使用してプログラムにより設定することもできます。たとえば、myprogram.m の 6 行目に条件付きブレークポイントを追加するには、以下を入力します。

dbstop in myprogram at 6 if n>=4

ファイルを実行すると、条件が満たされる場合に MATLAB はデバッグ モードになり、その行で一時停止します。myprogram の例では、n4 のときに MATLAB は for ループを 2 回実行し、3 回目の反復時に 6 行目で停止します。実行を続けると、n5 のときに MATLAB は 4 回目の反復時に 6 行目で停止します。

エラー ブレークポイント

エラー ブレークポイントを使用すると、MATLAB で問題が発生した場合に MATLAB がプログラムの実行を一時停止してデバッグ モードになります。標準ブレークポイントや条件付きブレークポイントとは異なり、このブレークポイントは特定のファイルの特定の行には設定しません。エラー ブレークポイントを設定すると、指定されたエラー条件が発生した場合に MATLAB は任意のファイルの任意の行で一時停止します。次に、MATLAB はデバッグ モードに入り、エラーを含むファイルを、エラーを含む行に実行矢印を表示して開きます。

エラー ブレークポイントを設定するには、[エディター] タブの [実行] をクリックし、以下のオプションから選択します。

  • [エラーで一時停止] を選択すると、すべてのエラーで一時停止します。

  • [警告で一時停止] を選択すると、すべての警告で一時停止します。

  • [NaN または Inf で一時停止] を選択すると、NaN (非数) または Inf (無限大) の値で一時停止します。

また、関数 dbstop を特定の condition と共に使用することで、プログラム的にブレークポイントを設定することもできます。たとえば、すべてのエラーで一時停止するには、次のように入力します。

dbstop if error
メッセージ ID が MATLAB:ls:InputsMustBeStrings である try/catch ブロックの try 部分の最初の実行時エラーで実行を停止するには、次のように入力します。
dbstop if caught error MATLAB:ls:InputsMustBeStrings

無名関数のブレークポイント

無名関数を含む MATLAB コードの行には、複数のブレークポイントを設定できます。たとえば、行自体にブレークポイントを設定できます。この場合、MATLAB ソフトウェアは行の先頭で一時停止します。または、行内の各無名関数にブレークポイントを設定することもできます。

無名関数を含む行にブレークポイントを追加したとき、エディターは行内のどこにブレークポイントを追加するかを尋ねます。1 行に複数のブレークポイントがある場合は、その行のブレークポイントのステータスにかかわらず、ブレークポイント アイコンは青色です。

行にあるすべてのブレークポイントの情報を表示するには、ポインターをブレークポイント アイコンの上に置きます。ツールヒントに利用可能な情報が表示されます。次のコード例では、5 行目に無名関数が 2 つあり、それぞれにブレークポイントがあります。ツールヒントには、両方のブレークポイントが有効であることが表示されます。

無名関数にブレークポイントを設定すると、MATLAB は無名関数が呼び出されるときに一時停止します。緑色の矢印は、コードが無名関数を定義している位置を示します。白の矢印は、コードが無名関数を呼び出す位置を示します。次のコード例では、MATLAB は、myanonymous.m という名前のファイルの 2 行目にある無名関数 sqr に設定されたブレークポイントでプログラムを一時停止します。白の矢印は、関数 sqr が 3 行目で呼び出されることを示しています。

無効なブレークポイント

グレーのブレークポイントは無効なブレークポイントを意味します。

ブレークポイントは以下の理由で無効になります。

  • 変更内容がファイルに保存されていない。ブレークポイントを有効にするには、ファイルを保存します。グレーのブレークポイントは赤になり、有効になったことを示します。

  • 行の中に構文エラーが存在します。ブレークポイントを設定すると、構文エラーが生じた場所を示すエラー メッセージが表示されます。ブレークポイントを有効にするには、構文エラーを修正してファイルを保存します。

ブレークポイントの無効化

選択したブレークポイントを無効化すると、プログラムがそれらのブレークポイントを一時的に無視し、中断せずに実行できるようになります。たとえば、問題が特定されて修正されたと考えた後や、条件付きブレークポイントの使用時に、ブレークポイントを無効化することがあります。

ブレークポイントを無効にするには、ブレークポイント アイコンを右クリックし、コンテキスト メニューから [ブレークポイントを無効にする] を選択します。

ブレークポイント アイコンに X が表示され、無効であることが示されます。

ブレークポイントを再び有効にするには、ブレークポイント アイコンを右クリックし、コンテキスト メニューから [ブレークポイントを有効にする] を選択します。

ブレークポイント アイコンの X 表示が消え、プログラムの実行がこの行で一時停止します。

ファイル内のすべてのブレークポイントを有効または無効にするには、[ファイル内をすべて有効にする] または [ファイル内をすべて無効にする] を選択します。これらのオプションは、有効または無効にするブレークポイントが少なくとも 1 つ存在する場合のみ利用できます。

ブレークポイントのクリア

すべてのブレークポイントは、手動でクリア (削除) するか、MATLAB セッションの終了時に自動的にクリアされるまでファイル内に残ります。

ブレークポイントをクリアするには、ブレークポイント アイコンを右クリックし、コンテキスト メニューから [ブレークポイントのクリア] を選択します。

また、関数 dbclear を使用することもできます。たとえば、myprogram.m というファイルの 6 行目のブレークポイントをクリアするには、以下を入力します。

 dbclear in myprogram at 6

ファイル内のすべてのブレークポイントをクリアするには、ブレークポイント アレーを右クリックし、[ファイル内をすべてクリアする] を選択します。dbclearall コマンドを使うこともできます。たとえば、myprogram.m というファイルのすべてのブレークポイントをクリアするには、以下を入力します。

dbclear all in myprogram

"すべての" ファイルのすべてのブレークポイント (エラー ブレークポイントを含む) をクリアするには、ブレークポイント アレーを右クリックし、[すべてクリア] を選択します。dbclear all コマンドを使うこともできます。

ブレークポイントは、MATLAB セッションを終了すると自動的にクリアされます。今後のセッションのためにブレークポイントを保存するには、関数 dbstatus を参照してください。

関連するトピック