Main Content

dbstop

デバッグ用にブレークポイントを設定する

説明

dbstop in filefile の最初の実行可能な行にブレークポイントを設定します。file を実行すると、MATLAB® はデバッグ モードになり、ブレークポイントで実行を一時停止して、一時停止した行を表示します。

dbstop in file at location は指定された場所にブレークポイントを設定します。MATLAB の実行はその場所の直前で一時停止します。ただし、その場所が無名関数の場合を除きます。その場所が無名関数の場合は、実行はブレークポイントの直後で停止します。

dbstop in file if expression は、ファイルの最初の実行可能な行に条件付きブレークポイントを設定します。expression が true (1) に評価される場合にのみ、実行が一時停止します。

dbstop in file at location if expression は、指定された位置に条件付きブレークポイントを設定します。expression が true に評価される場合にのみ、実行はその場所またはその直前で停止します。

dbstop if condition は、指定された condition (errornaninf など) を満たす行で実行を一時停止します。他のブレークポイントとは異なり、このブレークポイントは特定ファイルの特定行には設定されません。指定した condition が発生した時点で MATLAB は任意のファイルの任意の行で一時停止します。

dbstop(b) は、以前 b に保存したブレークポイントを復元します。保存したブレークポイントを含むファイルは、検索パス上または現在のフォルダー内になければなりません。MATLAB は行番号でブレークポイントを割り当てるため、ファイル内の行はブレークポイントを保存したときと同じでなければなりません。

すべて折りたたむ

ブレークポイントを設定し、プログラムの最初の実行可能な行で実行を一時停止します。

次のステートメントを含むファイル buggy.m を作成します。

function z = buggy(x)
n = length(x);
z = (1:n)./x;

dbstop コマンドを発行し、buggy を実行します。

dbstop in buggy
buggy(1:5)

MATLAB は停止した行を表示し、デバッグ モードになります。

2   n = length(x);
K>> 

dbquit」と入力してデバッグ モードを終了します。

プログラム内で、ローカル関数の実行可能な最初の行にブレークポイントを設定します。

次のステートメントを含むファイル myfile.m を作成します。

function n = myfile(x)
n = myfunction(x);

function y = myfunction(x)
y = x + 1;

myfunction にブレークポイントを設定します。

 dbstop in myfile>myfunction

プログラム内に、MATLAB が複数回ループを反復した後に一時停止するブレークポイントを設定します。

次のステートメントを含むファイル myprogram.m を作成します。

x = ones(1,10);

for n = 1:10
x(n) = x(n) + 1;
end

n >= 4 のときに一時停止するブレークポイントを設定し、コードを実行します。

dbstop in myprogram at 4 if n>=4
myprogram

MATLAB はループを 3 回反復した後、n = 4 のときに 4 行目で一時停止します。

4   x(n) = x(n) + 1;
K>> 

dbquit」と入力してデバッグ モードを終了します。

ブレークポイントを設定して、実行時エラーが発生したときに実行を一時停止します。

次のステートメントを含むファイル mybuggyprogram.m を作成します。

x = ones(1,10);

for n = 1:10
x(n) = x(n+1) + 1;
end

エラー ブレークポイントを設定し、mybuggyprogram を呼び出します。

dbstop if error
mybuggyprogram

実行時のエラーが発生し、MATLAB がデバッグ モードになり、mybuggyprogram.m の 4 行目で一時停止します。

Index exceeds matrix dimensions.
Error in mybuggyprogram (line 4)
x(n) = x(n+1) + 1; 
4   x(n) = x(n+1) + 1;

dbquit」と入力してデバッグ モードを終了します。

MException.last を実行して、プログラムで生成されたエラー メッセージ識別子を取得します。

MException.last
ans = 

  MException with properties:

    identifier: 'MATLAB:badsubscript'
       message: 'Index exceeds matrix dimensions.'
         cause: {}
         stack: [1×1 struct]

エラー ブレークポイントをクリアし、取得するエラー メッセージ識別子を指定して新しいエラー ブレークポイントを設定します。mybuggyprogram を呼び出します。

dbclear if error
dbstop if error MATLAB:badsubscript
mybuggyprogram

同じ実行時エラーが発生し、MATLAB がデバッグ モードになり、mybuggyprogram.m の 4 行目で一時停止します。

Index exceeds matrix dimensions.
Error in mybuggyprogram (line 4)
x(n) = x(n+1) + 1; 
4   x(n) = x(n+1) + 1;

dbquit」と入力してデバッグ モードを終了します。

ブレークポイントを設定し、コードが NaN 値を返したときに実行を一時停止します。

入力ベクトルを要求するファイル buggy.m を作成します。

function z = buggy(x)
n = length(x);
z = (1:n)./x;

警告ブレークポイントを設定し、要素の 1 つとして 0 を含む入力ベクトルを指定して buggy を呼び出します。

dbstop if naninf
buggy(0:2)

ゼロ除算エラーが発生し、MATLAB がデバッグ モードになり、buggy.m の 3 行目で一時停止します。

NaN/Inf breakpoint hit for buggy on line 3.

dbquit」と入力してデバッグ モードを終了します。

ブレークポイントの設定、保存、クリアを行い、その後、保存されているブレークポイントを復元します。

これらのステートメントを含むファイル buggy.m を作成します。

function z = buggy(x)
n = length(x);
z = (1:n)./x;

エラー ブレークポイントを設定し、buggy の第 2 行に標準ブレークポイントを設定します。

dbstop at 2 in buggy
dbstop if error

dbstatus を実行します。設定したブレークポイントの詳細が MATLAB により表示されます。

dbstatus
Breakpoint for buggy is on line 2.
Stop if error.

ブレークポイントを表す構造体を変数 b に割り当ててから、b を MAT ファイル buggybrkpnts に保存します。b=dbstatus('-completenames') を使用して、絶対パスおよびブレークポイント関数を入れ子にするシーケンスを保存します。

b = dbstatus('-completenames');
save buggybrkpnts b

すべてのブレークポイントをクリアします。

dbclear all

MAT ファイルを読み込み、保存された構造体 b とともに dbstop を呼び出して、ブレークポイントを復元します。

load buggybrkpnts
dbstop(b)

入力引数

すべて折りたたむ

ファイル名。文字ベクトルまたは string スカラーとして指定します。ファイル名には、MATLAB 検索パス上のファイルの "部分パス名" または任意のファイルの "絶対パス名" を含めることができます。MATLAB での有効なファイル名の詳細については、ファイル名の指定を参照してください。

例: myfile.m

さらに、file に filemarker (>) を含めて、特定のローカル関数またはファイル内の入れ子関数へのパスを指定できます。

例: myfile>myfunction

file が MATLAB コード ファイルではない場合 (組み込みファイルまたは MDL ファイルなど)、MATLAB は警告を発行します。MATLAB はファイル "内" で一時停止できないため、ファイルの実行前に一時停止します。

データ型: char | string

file に設定するブレークポイントの位置。次のオプションのいずれかとして指定します。

  • 文字ベクトルまたは string スカラーとして指定された file 内の行番号。既定値は 1 です。

  • 無名関数番号の位置にあり、文字ベクトルまたは string スカラーとして指定された file 内の行番号。たとえば、1@2 は、2 番目の無名関数の位置にある行番号 1 を指定します。無名関数の既定の番号は 1 です。

  • file 内のローカル関数の名前。文字ベクトルまたは string スカラーとして指定します。

メモ

file がファイルマーカーを含む場合、ブレークポイントの設定時に location を指定することはできません。たとえば、コマンド dbstop in myfile>myfilefunction at 5 は無効です。

データ型: char | string

スカラーの logical 値 1 または 0 と評価される論理式。文字ベクトルまたは string スカラーとして指定します。

例: n >= 4

データ型: char | string

一時停止条件。次のオプションのいずれかとして指定します。

  • errortry/catch ブロックの外部で発生する実行時エラー。また、uncaught 実行時エラーの後、実行を再開することはできません。

    特定のエラーが発生したときのみ実行を停止する場合は、メッセージ ID を指定します。以下に例を示します。

    • dbstop if error は、try/catch ブロックの外部で発生した最初の実行時エラーで実行を一時停止します。

    • dbstop if error MATLAB:ls:InputsMustBeStrings は、try/catch ブロックの外部で発生してメッセージ ID が MATLAB:ls:InputsMustBeStrings である最初の実行時エラーで実行を一時停止します。

  • caught errortry/catch ブロックの try 部分で発生する実行時エラー。特定のエラーが発生したときのみ実行を停止する場合は、メッセージ ID を指定します。

  • warning — 実行時警告が発生します。特定の警告が発生したときのみ実行を停止する場合は、メッセージ ID を指定します。

    この条件は、warning off all コマンドで警告を無効にした場合や、指定した id の警告を無効にした場合には効果がありません。警告の無効化の詳細については、warning を参照してください。

  • naninf — コードは、無限値 (Inf) または数値ではない値 (NaN) を、演算子、関数呼び出しまたはスカラー代入の結果として返します。

以前 b=dbstatus を使用して構造体配列に保存したブレークポイントのリスト。

ヒント

  • デバッグを開始する前に、プログラムが保存済みであり、プログラムとそれが呼び出すファイルがすべて検索パス上または現在のフォルダーに存在することを確認してください。

  • ブレークポイントで実行を一時停止した後に実行を再開するには、dbcont または dbstep を使用します。デバッグ モードを終了するには、dbquit を使用します。ファイル内のすべてのブレークポイントを削除するには、dbclear in filename を使用します。すべてのファイル内のすべてのブレークポイントを削除するには、dbclear all を使用します。詳細については、dbclear を参照してください。

  • MATLAB は、モーダル ダイアログ ボックスの表示中やプログラムが作成した Figure の表示中にブレークポイントで一時停止した場合、応答しなくなることがあります。デバッグ モードを終了して MATLAB プロンプト (>>) に戻るには、Ctrl+C を使用します。

バージョン履歴

R2006a より前に導入