ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

dbstop

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

構文

dbstop in file
dbstop in file at location
dbstop in file if expression
dbstop in file at location if expression
dbstop if condition
dbstop(s)

説明

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

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

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

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

dbstop if condition は指定した condition に一致する行で実行を停止します。

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

入力引数

file

文字列として指定される、ファイル仕様。通常は MATLAB 関数向けです。ファイル仕様には部分パスを含められますが、検索パス上のフォルダーまたは現在のフォルダーになければなりません。

コマンドが -completenames オプションを含み、ファイル仕様が完全修飾名である場合は、ファイルはパス上にある必要はありません。さらに、filespec に filemarker (>) を含め、特定のローカル関数またはファイル内の入れ子関数へのパスを指定できます。

file が MATLAB コード ファイルではない場合 (たとえば組み込みファイルまたは MDL ファイル)、MATLAB は警告を発行します。MATLAB はファイルを停止できないため、フィあるの実行前に停止します。

location

ブレークポイントを設定する、file の中の場所で、次のいずれとして指定されます。

  • lineno

    文字列と指定してされた file の行番号。既定の設定は 1 です。

  • lineno@n

    文字列として指定される、行番号 linenon 番目の無名関数。n の既定値は 1 です。

  • subfun

    文字列として指定される、file のローカル関数の名前。

expression

1 または 0 のスカラー論理値 (それぞれ true または false) に評価 (eval と同様) されるコード

condition

該当する条件が true に評価されたときに実行を停止する条件。condition を以下のいずれかに指定します。

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

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

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

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

  • caught error - try/catch ブロックの try 部分で発生する実行時エラー。特定のエラーが発生したときのみ実行を停止する場合は、メッセージ ID を指定します。メッセージ ID を指定する例の error 条件を参照してください。

  • warning - 実行時警告が発生します。特定の警告が発生したときのみ実行を停止する場合は、メッセージ ID を指定します。メッセージ ID を指定する例の error 条件を参照してください。

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

  • naninf および infnan

    コードは、無限の値 (Inf) または数値ではない値 (NaN) を、演算子、関数呼び出し、スカラー割り当ての結果として返します。naninfinfnan 条件による効果は同一です。

s

s=dbstatus を使用して構造体に以前に保存されたブレークポイント。

最初の実行可能な行で停止

この例では、ブレークポイントを設定し、buggy.m での最初の実行可能な行で実行を停止する方法を説明します。

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

    function z = buggy(x)
    n = length(x);
    z = (1:n)./x;
  2. dbstop コマンドを発行します。

    dbstop in buggy
    
  3. buggy を実行します。

    buggy(2:5)

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

    2   n = length(x);
    K>> 
  4. ファイル内の次の行に進みます。

    dbstep
  5. 変数エディターで n の値を確認します。

    openvar('n')
  6. デバッグ モードを終了します。

    dbquit

エラーが生じた場合に停止

この例では、ブレークポイントを設定して、実行時エラーが発生したときに実行を停止する方法を説明します。

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

    function z = buggy(x)
    n = length(x);
    z = (1:n)./x;
  2. コマンド ウィンドウで以下のステートメントを実行します。

    dbstop if error
    buggy(magic(3))

    buggy.m はベクトル上でのみ動作するため、ステップ 2 での入力によって実行時エラーが発生します。MATLAB はデバッグ モードになり、buggy.m の 3 行目で停止します。

    Error using  ./ 
    Matrix dimensions must agree.
    
    Error in buggy at 3
    z = (1:n)./x; 
    3   z = (1:n)./x;
  3. デバッグ モードを終了します。

    dbquit

infNaN の場合に停止

この例では、ブレークポイントを設定して、コードから NaN 値が返されたときに実行を停止する方法を説明します。

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

    function z = buggy(x)
    n = length(x);
    z = (1:n)./x;
  2. 以下のステートメントを実行します。

    dbstop if naninf
    buggy(0:2)

    buggy.m で、入力 x の要素のいずれかがゼロの場合、ゼロ割が生じます。このため、MATLAB は次のメッセージを返します。

    NaN/Inf breakpoint hit for buggy on line 3.

    MATLAB はデバッグ モードで、3 行目で停止します。

ファイルの関数で停止

この例では、collatzall プログラム ファイルで collatzplot_new 関数の最初の実行可能な行にブレークポイントを設定する方法を説明します。

  1. collatzall.m を MATLAB のサンプル フォルダーから現在のフォルダーにコピーします。

    copyfile(fullfile(matlabroot,'help','techdoc','matlab_env',...
    'examples','collatzall.m'),'.','f')
    
  2. エディターで、collatzall.m を開きます。

    open collatzall.m
    
  3. ブレークポイントを設定します。

     dbstop in collatzall>collatzplot_new
    

MATLAB コード ファイルではないファイルの停止

この例では、myfile.m を実行するときに組み込み関数 clear にブレークポイントを設定する方法を説明します。

  1. これらのステートメントを含むファイル myfile.m をエディターで作成します。

    function myfile(x)
    n = length(x);
    if n < 10
        disp('length is less than 10')
    else
        disp('length is 10 or greater')
    end
    clear
    disp('Value of n is cleared')
  2. これらのコマンドを発行してブレークポイントを設定します。

    x = [1 2 3 4 5 6 7 8 9 10]
    dbstop in clear; myfile(x)

    MATLAB が警告を発行し、関数 clear の呼び出しの前に停止します。警告は、次の図のように表示されます。

保存されているブレークポイントの復元

この例では、ブレークポイントを保存し、保存したブレークポイントを復元する方法を説明します。

  1. collatzall.m を MATLAB のサンプル フォルダーから現在のフォルダーにコピーします。

    copyfile(fullfile(matlabroot,'help','techdoc','matlab_env', ...
        'examples','collatzall.m'),'.','f')
  2. エディターで、collatzall.m を開きます。

    open collatzall.m
    
  3. コマンド ウィンドウからブレークポイントを設定します。

    dbstop at 12 in collatzall
    dbstop if error
  4. dbstatus を実行します。

    dbstatus
    

    MATLAB で設定したブレークポイントの詳細が表示されます。

    Breakpoint for collatzall>collatzplot_new is on line 12.
    Stop if error.
  5. ブレークポイントを構造体 s に保存して、s を MAT ファイル myfilebrkpnts に保存します。

    s=dbstatus('-completenames');
    save myfilebrkpnts s

    s=dbstatus('-completenames') を使用して、絶対パスおよびブレークポイント関数入れ子シーケンスを保存します。

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

    dbclear collatzall
  7. MAT ファイルを読み込んでブレークポイントを復元します。

    load myfilebrkpnts
    dbstop(s)

    ブレークポイントを含むファイルは、検索パスまたは現在のフォルダーになければなりません。

  8. ブレークポイントを検証します。

    dbstatus collatzall

詳細

すべて展開する

完全修飾名

  • Microsoft® Windows® プラットフォームでは、2 つのバックスラッシュ (\\) またはコロン (:) がドライブ名の後に続いて始まるファイル名です。

  • UNIX® プラットフォームでは、スラッシュ (/) またはチルダ (~) で始まるファイル名です。

ヒント

  • dbcont または dbstep を使用して、ブレークポイントが実行を停止した後に実行を再開させます。デバッグ モードを終了するには、関数 dbquit を使用します。

  • ファイルの実行とデバッグに MATLAB が使用するファイルをデバッグする場合、または MATLAB コード ファイルではないファイルをデバッグする場合、一部のデバッグ機能は予期したとおりに動作しません。たとえば、デバッグ プロンプト (K>>) に help functionname と入力するとヘルプが返されません。

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

  • MATLAB が停止してコマンド ウィンドウにハイパーリンクが付いた行番号が表示される場合は、ハイパーリンクをクリックします。ファイルがエディターで開き、MATLAB が実行を停止した行が表示されます。このようなリンクの例は、MATLAB コード ファイルではないファイルの停止のイメージを参照してください。

  • ブレークポイントは、現在のフォルダーまたは「検索パス」上のフォルダーに保存したファイルの実行可能な行にのみ設定することができます。

  • dbstop if warning には、warning off all を使用して警告を無効にしても影響はありません。同様に、指定されているメッセージ識別子の警告を無効にした場合、dbstop if warning identifier には影響がありません。offallwarning off identifier の詳細は、「warning」を参照してください。

参考

| | | | | | | |

関連する例

この情報は役に立ちましたか?